{ "cells": [ { "cell_type": "markdown", "id": "7fcc7aa7-2d4c-4948-bd3b-fe56cfc74f37", "metadata": {}, "source": [ "# Complete Workflow for a Single Element" ] }, { "cell_type": "markdown", "id": "d4bf7d9b-f1dc-4de3-9c78-4fb0509e81a6", "metadata": {}, "source": [ "## Prelude" ] }, { "cell_type": "code", "execution_count": 1, "id": "c4f834dd-be4d-4fda-8e56-b1c164e5c9c7", "metadata": { "tags": [] }, "outputs": [], "source": [ "from assyst.crystals import Formulas, sample_space_groups\n", "from assyst.filters import DistanceFilter, AspectFilter, VolumeFilter\n", "from assyst.relax import Relax, VolumeRelax, FullRelax, relax\n", "from assyst.perturbations import RandomChoice, Rattle, Stretch, apply_perturbations" ] }, { "cell_type": "code", "execution_count": 2, "id": "71ee3c6c-e67b-463d-8bcd-440cfcf1d8c2", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 3, "id": "bf6a7d63-544e-4806-b558-50cffeb80d58", "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 4, "id": "dc4b85df-3f31-4f73-91e9-12acb3225967", "metadata": {}, "outputs": [], "source": [ "from tqdm.auto import tqdm" ] }, { "cell_type": "code", "execution_count": 5, "id": "561efaac-15d7-4ec5-ac08-8841febfabf4", "metadata": {}, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 6, "id": "1721400f-1d18-48f5-b60e-5d2f1212747e", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "2c80a83a-8d4f-4049-8b06-f69754bcb4ad", "metadata": {}, "source": [ "### Options" ] }, { "cell_type": "code", "execution_count": 7, "id": "45659b6a-60b4-43b7-9f40-33647af55ab0", "metadata": {}, "outputs": [], "source": [ "# maximum number of atoms to generate for the training data\n", "# 2 atoms is very low, chosen here only to keep the example fast\n", "# 10 is a usual value, leading to ~10k structures in the final training data set\n", "max_num = 2" ] }, { "cell_type": "code", "execution_count": 8, "id": "bd71cb6d-51e7-4493-a51b-74d64158125d", "metadata": {}, "outputs": [], "source": [ "!mkdir -p Unary/{max_num}" ] }, { "attachments": { "9813a77f-63ac-489a-8718-4441a944c743.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "817893a3-77a4-4684-934b-7166bddcf652", "metadata": {}, "source": [ "#### Reference Potential\n", "\n", "Simple example potential to have a fast reference to relax structures and generate training data.\n", "\n", "![image.png](attachment:9813a77f-63ac-489a-8718-4441a944c743.png)" ] }, { "cell_type": "code", "execution_count": 9, "id": "911018d4-3b9b-4aa6-9165-8616f2d924da", "metadata": {}, "outputs": [], "source": [ "from ase.calculators.morse import MorsePotential" ] }, { "cell_type": "markdown", "id": "d2b3a8cb-73ee-49e5-a86d-1bfabd9ea91f", "metadata": {}, "source": [ "The values are chosen here so that they roughly reproduce Copper's lattice parameter." ] }, { "cell_type": "code", "execution_count": 10, "id": "795e8622-2047-4be8-8b66-013b154d6d6c", "metadata": {}, "outputs": [], "source": [ "reference = MorsePotential(epsilon=.3, r0=2.55265548*1.10619396, rho0=4)" ] }, { "cell_type": "markdown", "id": "8882157e-860e-480c-92d2-c7ae452aa3f9", "metadata": {}, "source": [ "Another good choice to play around with are the universal potentials based on the graph ACE models.\n", "\n", "For this to work you'll need to install the `tensorpotential` PyPI package." ] }, { "cell_type": "code", "execution_count": 11, "id": "66cdced4-1291-4ba9-8d4b-8748bf45c936", "metadata": {}, "outputs": [], "source": [ "from assyst.calculators import Grace" ] }, { "cell_type": "code", "execution_count": 12, "id": "0f68d016-33fa-4410-904d-da264904d8af", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[31mInit signature:\u001b[39m Grace(model: str = \u001b[33m'GRACE-FS-OAM'\u001b[39m) -> \u001b[38;5;28;01mNone\u001b[39;00m\n", "\u001b[31mDocstring:\u001b[39m \n", "Universal Graph Atomic Cluster Expansion models.\n", "\n", ".. attention::\n", " This class needs additional dependencies!\n", " Install `tensorpotential` from `PyPI `__.\n", "\u001b[31mFile:\u001b[39m ~/science/phd/dev/assyst/assyst/calculators.py\n", "\u001b[31mType:\u001b[39m ABCMeta\n", "\u001b[31mSubclasses:\u001b[39m " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Grace?" ] }, { "cell_type": "markdown", "id": "9925401b-461d-48e2-91f3-1d0e62d16406", "metadata": {}, "source": [ "## 1. Sampling Random Strucxtures\n", "\n", "The first step in ASSYST: generation of random structures while prescribing all possible bulk symmetries." ] }, { "cell_type": "code", "execution_count": 13, "id": "938e5453-fffe-443a-ba98-85abf1a43745", "metadata": {}, "outputs": [], "source": [ "fs = Formulas.range('Cu', max_num + 1)" ] }, { "cell_type": "code", "execution_count": 14, "id": "6d8b0871-d7cd-4136-8f3d-2db9c8310dd7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Formulas(atoms=({'Cu': 0}, {'Cu': 1}, {'Cu': 2}))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fs" ] }, { "cell_type": "code", "execution_count": 15, "id": "99e1430b-6325-44a5-87bd-6c0a91d85e22", "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "517727cf6fb049dc854b6ea65c2cdfc5", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3 [00:00 6 as an empirical threshold\n", " AspectFilter(6), \n", " sample_space_groups(\n", " fs, \n", " # generate all possible space groups numbered from 1 to 230\n", " spacegroups=range(1,230+1), \n", " max_atoms=max_num\n", " )\n", "))" ] }, { "cell_type": "code", "execution_count": 16, "id": "b5deb726-cde3-410c-8ffb-5ee9499403c0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "167" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(spg)" ] }, { "cell_type": "markdown", "id": "338234e0-ee2c-4d49-b06a-a297099ea601", "metadata": {}, "source": [ "### Save" ] }, { "cell_type": "code", "execution_count": 17, "id": "651f852c-77df-4141-bf0e-4116b4894330", "metadata": {}, "outputs": [], "source": [ "with open(f\"Unary/{max_num}/spg.pckl\", 'bw') as f:\n", " pickle.dump(spg, f)" ] }, { "cell_type": "markdown", "id": "5f1b03d8-a1f4-4787-adb0-a89b8fbb688b", "metadata": {}, "source": [ "## 2. Relaxing Configurations\n", "\n", "ASSYST seeks to find the important pockets in a materials' PES by applying a series of relaxation steps.\n", "They can be specified by `Relax` and its subclasses." ] }, { "cell_type": "code", "execution_count": 18, "id": "f058b625-7719-40c7-8637-ffa4aa954ff1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Object `ax.Relax` not found.\n" ] } ], "source": [ "ax.Relax?" ] }, { "cell_type": "markdown", "id": "6201d760-1f2a-40a7-b2a4-fc279278e330", "metadata": {}, "source": [ "In the ASSYST paper we use a volume relaxation and a full internal and cell shape relaxation step that I call here `VolMin` and `AllMin`." ] }, { "cell_type": "code", "execution_count": 19, "id": "95641b7d-2da7-4a02-b152-424303742a6b", "metadata": {}, "outputs": [], "source": [ "volset = VolumeRelax(max_steps=100, force_tolerance=1e-3)" ] }, { "cell_type": "code", "execution_count": 20, "id": "5be3fd73-60cf-4d91-af31-b0bd1107fff7", "metadata": {}, "outputs": [], "source": [ "allset = FullRelax(max_steps=100, force_tolerance=1e-3)" ] }, { "cell_type": "markdown", "id": "8803af2d-09e9-47d9-a7f9-1c4b239f6219", "metadata": {}, "source": [ "Some more experimental relaxation settings are defined in `assyst.relax`, e.g. options to relax only the cell shape or placing constraints on the symmetry." ] }, { "cell_type": "markdown", "id": "ece7dfc1-e283-4242-98a6-5c9e0c3a4eaa", "metadata": {}, "source": [ "In practice, these relaxations are carried out using DFT with low convergence settings. To speed up this example,\n", "I use here a Morse Potential calculator from ASE, but interfaces to production quality DFT codes exist as well and could be dropped in here." ] }, { "cell_type": "code", "execution_count": 21, "id": "f78459ca-cd46-4515-be59-1ae8efbb0eff", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "66887125109f4f96b1ea3cbb7c1e452e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/167 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.eval('energy/number_of_atoms').plot.hist(bins=100, log=True)\n", "plt.xlabel('Energy per atom [eV/atom]')" ] }, { "cell_type": "code", "execution_count": 47, "id": "2dd20353-f1c7-42a5-a817-4fd0f55f3885", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 300.0)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(df.ase_atoms.map(lambda s: s.cell.volume/len(s)), df.energy/df.number_of_atoms, marker='.')\n", "plt.xlim(0, 300)" ] }, { "cell_type": "code", "execution_count": 48, "id": "df20da54-3291-428b-afe1-16443a088973", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'force components [eV/$\\\\mathrm{\\\\AA}$]')" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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bWy61o8++qhatmyprl276uGHH65XH/mVlJRo06ZNSkpK8mhPSkrShg0bHKqqZnz99deKiIhQTEyMbrnlFn3zzTdOl1RjcnNztW/fPo/rHhgYqL59+9b76y5J7777rlq1aqULL7xQt99+uwoLC50uyacOHTokSe6/z7663tb/gOov7dy5U0888YTmzZvnbtu3b5/Cw8M9jmvRooUCAgK0b9++mi6xRj300EPq37+/goKC9Pbbb2vixIk6cOBAvfvo5BRbrvX48ePVrVs3tWjRQh9//LHuu+8+5ebm6umnn3a6NJ84cOCASktLy13L8PDwenUdT9ejRw89//zzuvDCC7V//37NnDlTvXr10tatW9WyZUuny6t2p65tRdd99+7dTpRUY5KTk3XzzTcrOjpaubm5+uMf/6irrrpKmzZtqhffJm2MUXp6unr37q24uDhJvrve9XImqKIFgqc/Nm7c6PGc/Px8XXvttbr55ps1atQoj30ul6vcOYwxFbY7yZtxn8kDDzygnj17qmvXrpo4caJmzJihuXPnVuMIKs/XY64r1/p0lXkd7r77bvXt21edO3fWqFGjtHjxYj3zzDM6ePCgw6PwrdOvWV24jlWRnJysG2+8UZ06ddLVV1+tVatWSZKee+45hyurWbZdd0kaNmyYBg4cqLi4OA0aNEivv/66tm/f7n4P1HVjxozRZ599pmXLlpXbV9XrXS9ngsaMGaNbbrnljMe0a9fO/b/z8/OVmJionj17asmSJR7HtW7dWh999JFH2w8//KATJ06US6BOq+y4K+vyyy9XUVGR9u/fX2vG7ssx16VrfbqqvA6n7iLZsWNHvZgxCAsLk5+fX7lZn8LCwlp/HX2pSZMm6tSpk77++munS6kRp+6E27dvn9q0aeNut+26S1KbNm0UHR1dL6792LFj9eqrr2rdunWKjIx0t/vqetfLEBQWFqawsLBzOnbv3r1KTExUfHy8MjMz1aCB5+RYz5499fDDD6ugoMD9Qr/11lsKDAxUfHy8z2uvisqM2xubN29Wo0aNfvX2cif4csx16Vqfriqvw+bNmyXJ4x+SuiwgIEDx8fHKysrSkCFD3O1ZWVm6/vrrHaysZh0/flzbtm1Tnz59nC6lRsTExKh169bKysrSpZdeKunn9WFr167Vo48+6nB1NevgwYPas2dPnf5v2hijsWPHasWK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2rSpQkNDlZ2drbfffltJSUlq1aqVPvroI3333XeVCofnWl/Tpk01bNgw3X///Tp06JBGjBjh0U9hYaGys7M9vuzwlVde0ZEjR5SamqqQkBCP42+66SZlZmZq0qRJ51wrUJcQgoBabPbs2SorK9Pw4cN1+PBhde/eXW+++eY5rSf54x//KH9/f/3pT39Sfn6+2rRpo9GjR0uSHnroIbVq1UqzZs3SN998o+bNm6tbt266//77veqvqrWeza233qqffvpJl112mfz8/DR27FjdcccdPj23N6/J6SZNmqSUlBTFxsbqp59+Um5urpo1a6Z169ZpwYIFKioqUnR0tObNm6fk5ORKvQbnWl9qaqqeeeYZJSUlKSoqymPfa6+9ph49eqhVq1butszMTF199dXlApAk3XjjjXrkkUf00UcfedxOD9QX/HYYgFqtX79+6tq1qxYsWOB0KTWiOsc7ePBg9e7dW5MnT/a6D5fLpRUrVuiGG27wXWGAQ1gTBAC1zKJFi9S0aVN9/vnnPu23d+/e+u1vf+vVc0ePHq2mTZv6tB7AacwEAajVbJsJ2rt3r3766SdJUlRUlAICAhyu6GeFhYUqKiqS9PPXApx+RyJQFxGCAACAlfg4DAAAWIkQBAAArEQIAgAAViIEAQAAKxGCAACAlQhBAADASoQgAABgJUIQAACwEiEIAABYiRAEAACs9P8Afv9yE+XFKfQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.forces.explode().explode().infer_objects().plot.hist(bins=100, log=True)\n", "plt.xlabel(r'force components [eV/$\\mathrm{\\AA}$]')" ] }, { "cell_type": "markdown", "id": "4deee21b-7b65-48c3-8c03-1f365cbb3ef1", "metadata": { "tags": [] }, "source": [ "### Final Filtering Step\n", "\n", "Because of the diverse and random nature of the structure in the training set, they can contain very extreme environments.\n", "Those create undue difficulty for learning the potential without beeing very informative, because, e.g. they contain atoms at very close distances.\n", "They can be filtered out either with `EnergyFilter` and `ForceFilter` when dealing with a list of Atoms, or directly on the pandas dataframe with the training data." ] }, { "cell_type": "code", "execution_count": 60, "id": "5066e8d0-6cb8-479b-b6bd-9b2d3abb6075", "metadata": { "tags": [] }, "outputs": [], "source": [ "from assyst.filters import EnergyFilter, ForceFilter" ] }, { "cell_type": "code", "execution_count": 61, "id": "8ed752d7-9f71-424f-9ee0-9d7306888411", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "\u001b[31mInit signature:\u001b[39m\n", "EnergyFilter(\n", " min_energy: float = -inf,\n", " max_energy: float = inf,\n", " *,\n", " missing: Literal[\u001b[33m'error'\u001b[39m, \u001b[33m'ignore'\u001b[39m] = \u001b[33m'error'\u001b[39m,\n", ") -> \u001b[38;5;28;01mNone\u001b[39;00m\n", "\u001b[31mDocstring:\u001b[39m Filters structures by energy per atom.\n", "\u001b[31mFile:\u001b[39m ~/science/phd/dev/assyst/assyst/filters.py\n", "\u001b[31mType:\u001b[39m ABCMeta\n", "\u001b[31mSubclasses:\u001b[39m " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "EnergyFilter?" ] }, { "cell_type": "code", "execution_count": 62, "id": "699bdbba-c158-44ec-9b57-7c94e183c887", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "\u001b[31mInit signature:\u001b[39m\n", "ForceFilter(\n", " max_force: float = inf,\n", " *,\n", " missing: Literal[\u001b[33m'error'\u001b[39m, \u001b[33m'ignore'\u001b[39m] = \u001b[33m'error'\u001b[39m,\n", ") -> \u001b[38;5;28;01mNone\u001b[39;00m\n", "\u001b[31mDocstring:\u001b[39m Filters structures by maximum force magnitude.\n", "\u001b[31mFile:\u001b[39m ~/science/phd/dev/assyst/assyst/filters.py\n", "\u001b[31mType:\u001b[39m ABCMeta\n", "\u001b[31mSubclasses:\u001b[39m " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ForceFilter?" ] }, { "cell_type": "code", "execution_count": 64, "id": "e5227490-1dfb-450e-9069-1befa118ea0f", "metadata": { "tags": [] }, "outputs": [], "source": [ "# filter(ForceFilter(10), ...)" ] }, { "cell_type": "markdown", "id": "95863ab3-7c87-4bd4-be99-df41f0013de1", "metadata": {}, "source": [ "These require ase `SinglePointCalculators` to be attached to the atoms." ] }, { "cell_type": "markdown", "id": "de22ff9d-3cbc-43cf-8c45-279402fc82a1", "metadata": {}, "source": [ "Or working directly on pandas." ] }, { "cell_type": "code", "execution_count": 65, "id": "f19db1d2-0930-4a96-9095-29f73cc456e1", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ase_atomsenergyforcesnumber_of_atomsNUMBER_OF_ATOMS
0(Atom('Cu', [0.4904552729198183, 1.63243643194...-2.557480[[1.54027859260511e-16, 8.817072997413392e-17,...11
1(Atom('Cu', [1.1427851095528256, 0.04530252914...-1.956908[[-3.2959746043559335e-17, 4.137315490204685e-...11
2(Atom('Cu', [0.0, 0.0, 0.0], index=0))-1.980389[[9.280770596475918e-17, -1.249000902703301e-1...11
3(Atom('Cu', [1.2374903121082077, 1.23749031210...-1.740938[[-1.3742262536253769e-17, -3.309527131512002e...11
4(Atom('Cu', [1.2952387291958223, 4.44089209850...-2.092009[[3.361026734705064e-17, -1.0668549377257364e-...11
..................
1455(Atom('Cu', [0.12337953810948867, -0.035488792...-5.226908[[2.274477532016276, -0.3575283070841724, -2.0...22
1456(Atom('Cu', [0.1253714680968149, -0.0336145807...-5.134857[[2.782709407024391, -0.23253255007378126, -2....22
1457(Atom('Cu', [0.0, 0.0, 0.0], index=0), Atom('C...-5.142435[[-2.624202938283915e-15, -1.366962099069724e-...22
1458(Atom('Cu', [0.0, 0.0, 0.0], index=0), Atom('C...-5.502145[[-2.3635607360183997e-15, -2.0929438737660178...22
1459(Atom('Cu', [0.0, 0.0, 0.0], index=0), Atom('C...-4.048501[[-6.816731424122424e-15, -6.053100728986571e-...22
\n", "

1460 rows × 5 columns

\n", "
" ], "text/plain": [ " ase_atoms energy \\\n", "0 (Atom('Cu', [0.4904552729198183, 1.63243643194... -2.557480 \n", "1 (Atom('Cu', [1.1427851095528256, 0.04530252914... -1.956908 \n", "2 (Atom('Cu', [0.0, 0.0, 0.0], index=0)) -1.980389 \n", "3 (Atom('Cu', [1.2374903121082077, 1.23749031210... -1.740938 \n", "4 (Atom('Cu', [1.2952387291958223, 4.44089209850... -2.092009 \n", "... ... ... \n", "1455 (Atom('Cu', [0.12337953810948867, -0.035488792... -5.226908 \n", "1456 (Atom('Cu', [0.1253714680968149, -0.0336145807... -5.134857 \n", "1457 (Atom('Cu', [0.0, 0.0, 0.0], index=0), Atom('C... -5.142435 \n", "1458 (Atom('Cu', [0.0, 0.0, 0.0], index=0), Atom('C... -5.502145 \n", "1459 (Atom('Cu', [0.0, 0.0, 0.0], index=0), Atom('C... -4.048501 \n", "\n", " forces number_of_atoms \\\n", "0 [[1.54027859260511e-16, 8.817072997413392e-17,... 1 \n", "1 [[-3.2959746043559335e-17, 4.137315490204685e-... 1 \n", "2 [[9.280770596475918e-17, -1.249000902703301e-1... 1 \n", "3 [[-1.3742262536253769e-17, -3.309527131512002e... 1 \n", "4 [[3.361026734705064e-17, -1.0668549377257364e-... 1 \n", "... ... ... \n", "1455 [[2.274477532016276, -0.3575283070841724, -2.0... 2 \n", "1456 [[2.782709407024391, -0.23253255007378126, -2.... 2 \n", "1457 [[-2.624202938283915e-15, -1.366962099069724e-... 2 \n", "1458 [[-2.3635607360183997e-15, -2.0929438737660178... 2 \n", "1459 [[-6.816731424122424e-15, -6.053100728986571e-... 2 \n", "\n", " NUMBER_OF_ATOMS \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 \n", "... ... \n", "1455 2 \n", "1456 2 \n", "1457 2 \n", "1458 2 \n", "1459 2 \n", "\n", "[1460 rows x 5 columns]" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.query('-3 <= energy / number_of_atoms < 10')" ] }, { "cell_type": "markdown", "id": "641bb5f7-d45f-4ff4-a281-92517e121926", "metadata": {}, "source": [ "### ACE\n", "\n", "Fit a simplified linear, pair descriptor only ACE potential to the training data.\n", "\n", "You'll need to install `python-ace` from either PyPI or conda-forge." ] }, { "cell_type": "code", "execution_count": 49, "id": "09cc380e-cd17-4fe5-a543-96929e473a64", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/ponder/micromamba/envs/assyst/lib/python3.11/site-packages/pyace/multispecies_basisextension.py:4: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.\n", " import pkg_resources\n" ] } ], "source": [ "import pyace.linearacefit as plf\n", "import pyace\n", "def make_ace(rmax, number_of_radial_functions, element='Cu'):\n", " '''Creates a simple basis configuration for a pair ACE.'''\n", " pot_conf = {\n", " 'elements': [element],\n", " 'embeddings': {\n", " 'ALL': {\n", " 'fs_parameters': [1, 1],\n", " 'ndensity': 1,\n", " 'npot': 'FinnisSinclair',\n", " },\n", " },\n", " 'bonds': {\n", " 'ALL': {\n", " 'NameOfCutoffFunction': 'cos',\n", " 'dcut': 0.01,\n", " 'radbase': 'ChebPow',\n", " 'radparameters': [2.0],\n", " 'rcut': rmax\n", " },\n", " },\n", " 'functions': {\n", " 'UNARY': { \n", " 'nradmax_by_orders': [ number_of_radial_functions ],\n", " 'lmax_by_orders': [ 0 ] \n", " }\n", " }\n", " }\n", " return pyace.create_multispecies_basis_config(pot_conf)" ] }, { "cell_type": "code", "execution_count": 50, "id": "f9da8788-8677-46c8-9130-3e4d7baa8206", "metadata": {}, "outputs": [], "source": [ "from ase import Atoms\n", "def dimer(calc, r):\n", " '''Helper function to evaluate a dimer curve for a given calculator.\n", "\n", " Args:\n", " calc (ase.calculator.Calculator): the potential to evaluate\n", " r (iterable of float): distances to evaluate the dimer curve at\n", "\n", " Returns:\n", " array of distances as given, array of corresponding energies.'''\n", " s = lambda r: Atoms(['Cu','Cu'], positions=[[0.]*3, [r, 0, 0]], cell=[40]*3)\n", " e = []\n", " r = np.array(r)\n", " for ri in r:\n", " si = s(ri)\n", " si.calc = calc\n", " e.append(si.get_potential_energy())\n", " return r, np.array(e)" ] }, { "cell_type": "code", "execution_count": 51, "id": "98c1228f-3fc8-425a-9937-9d48b3cb8455", "metadata": {}, "outputs": [], "source": [ "bbasis = make_ace(6.5, number_of_radial_functions=20, element='Cu')\n", "ds = plf.LinearACEDataset(bbasis, df)" ] }, { "cell_type": "code", "execution_count": 52, "id": "e184bf44-08e7-471e-96e7-6a7768d5423a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 6.69 ms, sys: 61.1 ms, total: 67.8 ms\n", "Wall time: 898 ms\n" ] } ], "source": [ "%%time\n", "ds.construct_design_matrix()" ] }, { "cell_type": "code", "execution_count": 53, "id": "e448fa0b-01f4-4374-a7dd-7cc3d2f0903f", "metadata": {}, "outputs": [], "source": [ "lf = plf.LinearACEFit(train_dataset=ds)" ] }, { "cell_type": "code", "execution_count": 54, "id": "37888c6c-96c8-4c9f-a8b8-3bd2e49ad354", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 4.96 ms, sys: 1.98 ms, total: 6.94 ms\n", "Wall time: 11.4 ms\n" ] }, { "data": { "text/html": [ "
Ridge(alpha=1e-05, copy_X=False, fit_intercept=False, random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Ridge(alpha=1e-05, copy_X=False, fit_intercept=False, random_state=42)" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "lf.fit()" ] }, { "cell_type": "code", "execution_count": 55, "id": "1cfada04-6e55-4edf-b857-62d72e1a1e7d", "metadata": {}, "outputs": [], "source": [ "acef = pyace.PyACECalculator(lf.get_bbasis())" ] }, { "cell_type": "markdown", "id": "d559e0db-cb6a-479b-8674-8114a893a1b0", "metadata": {}, "source": [ "Basic error metrics." ] }, { "cell_type": "code", "execution_count": 56, "id": "55d13539-356d-4bb8-9dc6-8e477b0958d4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'epa_mae': 0.0031517361621489818,\n", " 'epa_rmse': 0.00443638735345121,\n", " 'f_comp_mae': 0.0015019558016016387,\n", " 'f_comp_rmse': 0.0033168030199981578}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lf.compute_errors()" ] }, { "cell_type": "markdown", "id": "f232782f-37f9-4dbc-aa74-33a00449fcdf", "metadata": {}, "source": [ "Compare the resulting pair potential." ] }, { "cell_type": "code", "execution_count": 57, "id": "c2cff9f4-939f-4cd1-a245-1f99746660f4", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "r = np.linspace(2, 7)\n", "plt.subplot(121)\n", "plt.plot(*dimer(acef, r), label='ACE')\n", "plt.plot(*dimer(reference, r), label='REF')\n", "plt.legend()\n", "plt.xlabel(r'$r$ [$\\mathrm{\\AA}$]')\n", "plt.ylabel(r'$E$ [eV/atom]')\n", "plt.subplot(122)\n", "plt.plot(r, dimer(acef, r)[1]-dimer(reference, r)[1])\n", "plt.xlabel(r'$r$ [$\\mathrm{\\AA}$]')\n", "plt.ylabel(r'$\\Delta E$ [eV/atom]')\n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": null, "id": "14b610f7-66ef-479d-b9a3-60ed95e1e410", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12.0" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }