{ "cells": [ { "cell_type": "markdown", "id": "d9f04f8d-949a-421d-b65d-1b43878cc057", "metadata": {}, "source": [ "## Complete guide to storing and converting PLAMS Molecules between Python libraries and file formats" ] }, { "cell_type": "code", "execution_count": 1, "id": "f609f4c1-5dab-4349-9250-d4bb89ddb656", "metadata": {}, "outputs": [], "source": [ "import os\n", "from os.path import expandvars\n", "from pathlib import Path\n", "\n", "# Make sure to source amsbashrc.sh before launching this example so that\n", "# the AMSHOME environment variable is set. Requires AMS2025+ to run this example.\n", "\n", "AMSHOME = os.environ[\"AMSHOME\"]\n", "cif_file = f\"{AMSHOME}/atomicdata/Molecules/IZA-Zeolites/ABW.cif\"\n", "xyz_file = f\"{AMSHOME}/scripting/scm/params/examples/benchmark/ISOL6/e_13.xyz\"\n", "badxyz_file = f\"{AMSHOME}/scripting/scm/plams/unit_tests/xyz/reactant2.xyz\"\n", "\n", "assert Path(cif_file).exists(), f\"{cif_file} does not exist.\"\n", "assert Path(xyz_file).exists(), f\"{xyz_file} does not exist.\"\n", "\n", "\n", "def head(filename, n: int = 4):\n", " \"\"\"Print the first ``n`` lines of a file\"\"\"\n", " with open(filename, \"r\") as f:\n", " lines = f.readlines()\n", " lines = lines[: min(n, len(lines))]\n", " print(\"\".join(lines))" ] }, { "cell_type": "markdown", "id": "4b30b7c2-f933-4d69-a5c3-7e19b8bfb447", "metadata": {}, "source": [ "### SMILES" ] }, { "cell_type": "markdown", "id": "03c12f87-f53b-42b7-974e-1b6271e68019", "metadata": {}, "source": [ "#### Load PLAMS Molecule from SMILES string" ] }, { "cell_type": "code", "execution_count": 2, "id": "9ad1c2c4-29e9-4320-bf8b-1df2df7b7831", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import from_smiles, Molecule, plot_molecule\n", "\n", "mol = from_smiles(\"CCCCO\")\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "df623aba-c463-4734-aedb-86b259ec52b9", "metadata": {}, "source": [ "#### Convert PLAMS Molecule to SMILES string\n", "\n", "Note: This requires that bonds are defined in the PLAMS Molecule." ] }, { "cell_type": "code", "execution_count": 3, "id": "8f21e769-031a-414a-ac65-cb5cfe5a193b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CCCCO\n" ] } ], "source": [ "from scm.plams import to_smiles\n", "\n", "smiles = to_smiles(mol)\n", "print(smiles)" ] }, { "cell_type": "markdown", "id": "b9840965-c354-41fc-8cab-2306fc10b26f", "metadata": {}, "source": [ "### .xyz files" ] }, { "cell_type": "markdown", "id": "cb2fdb27-47ad-4835-acbb-d93d6df4bcf2", "metadata": {}, "source": [ "#### Load PLAMS Molecule from .xyz file" ] }, { "cell_type": "code", "execution_count": 4, "id": "c50ddd01-c601-4bb1-855c-5c57370123b7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import Molecule, plot_molecule\n", "\n", "mol = Molecule(xyz_file)\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "d2967ded-7cad-4d4c-92d2-d0cead4ebaf4", "metadata": { "tags": [] }, "source": [ "#### Write PLAMS Molecule to .xyz file" ] }, { "cell_type": "code", "execution_count": 5, "id": "01e5758f-cefa-4d80-8c75-2ec08fc0ff33", "metadata": {}, "outputs": [], "source": [ "mol.properties.comment = \"The comment line (2nd line after the number of atoms)\"\n", "mol.write(\"out.xyz\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "e6299460-fde0-4f9f-9df2-5d9cdf61a3fa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "26\n", "The comment line (2nd line after the number of atoms)\n", " C -1.47627000 -1.15316000 -0.29279600\n", " C -2.86892000 -1.15881000 -0.29469200\n", "\n" ] } ], "source": [ "head(\"out.xyz\")" ] }, { "cell_type": "markdown", "id": "40ad8899-7d61-4f3f-a865-17edae3fc99c", "metadata": {}, "source": [ "### .cif files" ] }, { "cell_type": "markdown", "id": "34858f49-4e5b-44d5-8b25-1722e3cb3e05", "metadata": {}, "source": [ "#### Load PLAMS Molecule from .cif file\n", "\n", "PLAMS cannot natively read .cif files. Instead, go through another library, for example ASE or pymatgen." ] }, { "cell_type": "code", "execution_count": 7, "id": "bd212e28-b10d-46c3-b1e8-e5022d19efee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/ormrodmorley/Documents/code/ams/amshome/bin.release/python3.8/lib/python3.8/site-packages/ase/io/cif.py:401: UserWarning: crystal system 'orthorhombic' is not interpreted for space group Spacegroup(74, setting=1). This may result in wrong setting!\n", " warnings.warn(\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ase.io import read\n", "from scm.plams import fromASE\n", "\n", "mol: Molecule = fromASE(read(cif_file))\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "d826de39-6929-4c6b-a1f7-488b1b0003cf", "metadata": {}, "source": [ "#### Write PLAMS Molecule to .cif file\n", "\n", "PLAMS cannot natively export to .cif files. Instead, go through another library, for example ASE or pymatgen.\n", "\n", "ASE can be used to write many file formats. See https://wiki.fysik.dtu.dk/ase/ase/io/io.html" ] }, { "cell_type": "code", "execution_count": 8, "id": "4de4e588-9f26-48b8-a306-c7ad498ef511", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data_image0\n", "_chemical_formula_structural O16Si8\n", "_chemical_formula_sum \"O16 Si8\"\n", "_cell_length_a 9.873\n", "\n" ] } ], "source": [ "from scm.plams import toASE\n", "\n", "toASE(mol).write(\"out.cif\")\n", "head(\"out.cif\")" ] }, { "cell_type": "markdown", "id": "3b10bce0-fd11-4803-bb72-fe614ff435b7", "metadata": {}, "source": [ "### AMS .in system block format\n", "\n", "#### Write PLAMS Molecule to AMS .in system file" ] }, { "cell_type": "code", "execution_count": 9, "id": "2026498d-f78e-4337-993a-109a05094a8d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "System\n", " Atoms\n", " O 4.9365000000 1.3135000000 3.0896710000\n", " O 0.0000000000 3.9405000000 7.4746710000\n", "\n" ] } ], "source": [ "mol.write(\"ams_system_block.in\")\n", "head(\"ams_system_block.in\")" ] }, { "cell_type": "markdown", "id": "c0788fef-dd4d-4851-919f-4f423eb15f43", "metadata": {}, "source": [ "#### Load PLAMS Molecule from AMS .in system file" ] }, { "cell_type": "code", "execution_count": 10, "id": "1846a459-afdc-48d6-98c6-3741c41d1453", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import Molecule\n", "\n", "mol = Molecule(\"ams_system_block.in\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "4e3960d8-74af-41a6-92bf-b0ff798bef38", "metadata": {}, "source": [ "### POSCAR/CONTCAR (VASP input format)" ] }, { "cell_type": "markdown", "id": "e1d58bbd-46f0-42d0-91c4-a781e52fcf74", "metadata": {}, "source": [ "#### Write PLAMS Molecule to POSCAR/CONTCAR (VASP input format)\n", "\n", "ASE can be used to write many file formats. See https://wiki.fysik.dtu.dk/ase/ase/io/io.html" ] }, { "cell_type": "code", "execution_count": 11, "id": "13ba6b79-71e3-4cdb-bd9c-cebbfb25c9e6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " O Si \n", " 1.0000000000000000\n", " 9.8729999999999993 0.0000000000000000 0.0000000000000000\n", " 0.0000000000000000 5.2539999999999996 0.0000000000000000\n", " 0.0000000000000000 0.0000000000000000 8.7699999999999996\n", " O Si \n", " 16 8\n", "Cartesian\n", " 4.9364999999999997 1.3134999999999999 3.0896710000000001\n", " 0.0000000000000000 3.9405000000000001 7.4746709999999998\n", "\n" ] } ], "source": [ "from scm.plams import toASE\n", "\n", "toASE(mol).write(\"POSCAR\")\n", "head(\"POSCAR\", 10)" ] }, { "cell_type": "markdown", "id": "da19ccd8-8f02-4fb7-a8dd-daf850ace16d", "metadata": {}, "source": [ "#### Load PLAMS Molecule from POSCAR/CONTCAR (VASP input format)" ] }, { "cell_type": "code", "execution_count": 12, "id": "9d4538fe-ebf2-483e-9cb9-2bb79e74265d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import fromASE\n", "from ase.io import read\n", "\n", "mol: Molecule = fromASE(read(\"POSCAR\"))\n", "\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "22da54f8-642f-4251-bfca-19ff3f29ebf8", "metadata": {}, "source": [ "### ASE Atoms Python class" ] }, { "cell_type": "markdown", "id": "81ca9d0c-230c-4bde-ba32-7b84444e7d37", "metadata": {}, "source": [ "#### Convert PLAMS Molecule to ASE Atoms" ] }, { "cell_type": "code", "execution_count": 13, "id": "f475f91d-b65c-4566-a35d-dba3fd11c041", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n", "mol.get_formula()='O16Si8'\n", "type(ase_atoms)=\n", "ase_atoms.get_chemical_formula()='O16Si8'\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import toASE\n", "from ase import Atoms\n", "from ase.visualize.plot import plot_atoms\n", "import matplotlib.pyplot as plt\n", "\n", "print(f\"{type(mol)=}\")\n", "print(f\"{mol.get_formula()=}\")\n", "\n", "ase_atoms: Atoms = toASE(mol)\n", "print(f\"{type(ase_atoms)=}\")\n", "print(f\"{ase_atoms.get_chemical_formula()=}\")\n", "\n", "_, ax = plt.subplots(figsize=(2, 2))\n", "plot_atoms(ase_atoms, rotation=\"-85x,5y,0z\", ax=ax);" ] }, { "cell_type": "markdown", "id": "3627b652-b523-4113-a2f6-1cf716efbda7", "metadata": {}, "source": [ "#### Convert ASE Atoms to PLAMS Molecule" ] }, { "cell_type": "code", "execution_count": 14, "id": "3cf52bd7-5892-48f7-bc6b-9a5f24ca6ae2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import fromASE, plot_molecule, Molecule\n", "\n", "mol: Molecule = fromASE(ase_atoms)\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol, rotation=\"-85x,5y,0z\");" ] }, { "cell_type": "markdown", "id": "af5218b8-d203-4ceb-8d91-c4097068716a", "metadata": {}, "source": [ "### RDKit Mol Python class" ] }, { "cell_type": "markdown", "id": "9dd59753-79ca-45e8-9ba5-701e1010fb07", "metadata": {}, "source": [ "#### Convert PLAMS Molecule to RDKit Mol" ] }, { "cell_type": "code", "execution_count": 15, "id": "a9d0f944-cfcf-40bd-b874-0d4b081788af", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(rdkit_mol)=\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\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", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "H\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scm.plams import to_rdmol, Molecule\n", "from rdkit.Chem import Draw\n", "from rdkit.Chem.Draw import IPythonConsole\n", "\n", "IPythonConsole.ipython_useSVG = True\n", "IPythonConsole.molSize = 250, 250\n", "\n", "plams_mol = Molecule(xyz_file)\n", "# guess bonds, the bonds will be included in the RDKit molecule\n", "plams_mol.guess_bonds()\n", "\n", "rdkit_mol = to_rdmol(plams_mol)\n", "print(f\"{type(rdkit_mol)=}\")\n", "rdkit_mol" ] }, { "cell_type": "markdown", "id": "ca39cbe8-38fe-4b81-a427-5411b356ddcb", "metadata": {}, "source": [ "#### Convert RDKit Mol to PLAMS Molecule" ] }, { "cell_type": "code", "execution_count": 16, "id": "2154888a-8305-423b-8d99-341e5a52f44a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(rdkit_mol)=\n", "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.plams import from_rdmol, plot_molecule, Molecule\n", "\n", "mol: Molecule = from_rdmol(rdkit_mol)\n", "\n", "print(f\"{type(rdkit_mol)=}\")\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "dde8fe19-556c-4c9e-b6cf-2d0dd5a34ef3", "metadata": {}, "source": [ "#### Convert problematic PLAMS Molecule to RDKit Mol" ] }, { "cell_type": "code", "execution_count": 17, "id": "7da2ed9d-f9b5-4fec-86d6-c37af291b3ff", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mol = Molecule(badxyz_file)\n", "mol.guess_bonds()\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "c84e4100-2347-4490-b216-cd23a48b78e2", "metadata": {}, "source": [ "This molecule will fail to convert to an RDKit Mol object, because RDKit does not like the AMS assignment of double bonds." ] }, { "cell_type": "code", "execution_count": 18, "id": "8fe9140c-8de7-4c01-a64b-49ca37ca97a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[25.02|10:29:13] RDKit Sanitization Error.\n", "[25.02|10:29:13] Most likely this is a problem with the assigned bond orders: Use chemical insight to adjust them.\n", "[25.02|10:29:13] Note that the atom indices below start at zero, while the AMS-GUI indices start at 1.\n", "Failed to convert\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "RDKit ERROR: [10:29:13] Can't kekulize mol. Unkekulized atoms: 10 11 12 13 14\n", "RDKit ERROR: \n", "[10:29:13] Can't kekulize mol. Unkekulized atoms: 10 11 12 13 14\n", "\n" ] } ], "source": [ "try:\n", " rdkit_mol = to_rdmol(mol)\n", "except ValueError as exc:\n", " print(\"Failed to convert\")" ] }, { "cell_type": "markdown", "id": "dce54ed2-5913-4230-9990-7f8f16c66fb9", "metadata": {}, "source": [ "The problem can be fixed by passing the argument `presanitize` to the `to_rdmol` function." ] }, { "cell_type": "code", "execution_count": 19, "id": "be1209b5-08a8-490f-a28c-961f423d9b9b", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "RDKit ERROR: [10:29:13] Can't kekulize mol. Unkekulized atoms: 10 11 12 13 14\n", "RDKit ERROR: \n", "[10:29:13] Can't kekulize mol. Unkekulized atoms: 10 11 12 13 14\n", "\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\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", "O\n", "O\n", "H\n", "H\n", "O\n", "H\n", "H\n", "H\n", "C-\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rdkit_mol = to_rdmol(mol, presanitize=True)\n", "rdkit_mol" ] }, { "cell_type": "markdown", "id": "3d18c8c5-a1f6-4ef7-bb63-44d14faa3333", "metadata": {}, "source": [ "### SCM libbase UnifiedChemicalSystem Python class\n", "\n", "#### Convert PLAMS Molecule to UnifiedChemicalSystem" ] }, { "cell_type": "code", "execution_count": 20, "id": "99d4138e-9dac-4f70-bdd3-be072b5dfc34", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(chemsys)=\n", "System\n", " Atoms\n", " C -1.47627 -1.15316 -0.292796\n", " C -2.86892 -1.15881 -0.294692\n", " C -3.59226 0.00184956 0.0382389\n", " C -2.86824 1.16159 0.37328\n", " C -1.47569 1.1545 0.373398\n", " C -0.739311 0.000234896 0.0410634\n", " C 1.47627 1.15316 -0.292796\n", " C 0.739311 -0.000234896 0.0410634\n", " C 1.47569 -1.1545 0.373398\n", " C 2.86824 -1.16159 0.37328\n", " C 3.59226 -0.00184956 0.0382389\n", " C 2.86892 1.15881 -0.294692\n", " N 4.99096 0.0138526 0.0923716\n", " N -4.99096 -0.0138526 0.0923716\n", " H -0.945575 -2.05785 -0.582591\n", " H -3.40776 -2.06659 -0.565539\n", " H -3.40667 2.06804 0.649043\n", " H -0.944434 2.05992 0.659738\n", " H 0.945575 2.05785 -0.582591\n", " H 0.944434 -2.05992 0.659738\n", " H 3.40667 -2.06804 0.649043\n", " H 3.40776 2.06659 -0.565539\n", " H 5.43534 -0.887836 -0.024637\n", " H 5.434540000000001 0.731266 -0.466878\n", " H -5.434540000000001 -0.731266 -0.466878\n", " H -5.43534 0.887836 -0.024637\n", " End\n", "End\n" ] } ], "source": [ "from scm.utils.conversions import plams_molecule_to_chemsys, chemsys_to_plams_molecule\n", "from scm.plams import Molecule\n", "from scm.libbase import UnifiedChemicalSystem\n", "\n", "mol = Molecule(xyz_file)\n", "chemsys = plams_molecule_to_chemsys(mol)\n", "print(f\"{type(chemsys)=}\")\n", "print(chemsys)" ] }, { "cell_type": "markdown", "id": "b50a29db-0a73-45e4-b15d-e181522819d6", "metadata": {}, "source": [ "#### Convert UnifiedChemicalSystem to PLAMS Molecule" ] }, { "cell_type": "code", "execution_count": 21, "id": "33026182-f8d0-4950-a9f4-58f2ff784f9f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(chemsys)=\n", "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scm.utils.conversions import plams_molecule_to_chemsys, chemsys_to_plams_molecule\n", "from scm.plams import Molecule\n", "from scm.libbase import UnifiedChemicalSystem\n", "\n", "mol = chemsys_to_plams_molecule(chemsys)\n", "print(f\"{type(chemsys)=}\")\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] }, { "cell_type": "markdown", "id": "6101a3ee-e500-4624-b5a8-fb737f55fb31", "metadata": {}, "source": [ "### pymatgen Structure and Molecule Python classes" ] }, { "cell_type": "markdown", "id": "52de8abe-c88e-43cb-adaa-f93a55e8b1de", "metadata": {}, "source": [ "Note that for this part of the example, the `pymatgen` package needs to be installed. This can be done via `amspackages`." ] }, { "cell_type": "code", "execution_count": 22, "id": "bc5b7a22-520e-48e7-b36b-e7e6390e2569", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requested packages are already installed.\n" ] } ], "source": [ "!\"${AMSBIN}/amspackages\" install pymatgen" ] }, { "cell_type": "markdown", "id": "3bc035d5-2b0a-4c6b-a611-a4372f820b17", "metadata": {}, "source": [ "#### Convert PLAMS Molecule to pymatgen Structure (periodic)\n", "\n", "There is no builtin converter between PLAMS Molecule and pymatgen Structure (periodic crystal). Instead, you need to go through the ASE interface to both packages:" ] }, { "cell_type": "code", "execution_count": 23, "id": "3cbe2fad-76f0-40cb-8d6a-ecde2b2b5be2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(mol)=\n", "type(pymatgen_structure)=\n", "Full Formula (Si8 O16)\n", "Reduced Formula: SiO2\n", "abc : 9.873000 5.254000 8.770000\n", "angles: 90.000000 90.000000 90.000000\n", "pbc : True True True\n", "Sites (24)\n", " # SP a b c\n", "--- ---- ------ ---- ------\n", " 0 O 0.5 0.25 0.3523\n", " 1 O 0 0.75 0.8523\n", " 2 O 0.5 0.75 0.6477\n", " 3 O 0 0.25 0.1477\n", " 4 O 0.31 0 0.5\n", " 5 O 0.81 0.5 0\n", " 6 O 0.69 0 0.5\n", " 7 O 0.19 0.5 0\n", " 8 O 0.31 0.5 0.5\n", " 9 O 0.81 0 0\n", " 10 O 0.69 0.5 0.5\n", " 11 O 0.19 0 0\n", " 12 O 0.25 0.25 0.25\n", " 13 O 0.75 0.75 0.75\n", " 14 O 0.75 0.25 0.25\n", " 15 O 0.25 0.75 0.75\n", " 16 Si 0.3428 0.25 0.4007\n", " 17 Si 0.8428 0.75 0.9007\n", " 18 Si 0.6572 0.25 0.4007\n", " 19 Si 0.1572 0.75 0.9007\n", " 20 Si 0.6572 0.75 0.5993\n", " 21 Si 0.1572 0.25 0.0993\n", " 22 Si 0.3428 0.75 0.5993\n", " 23 Si 0.8428 0.25 0.0993\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/ormrodmorley/Documents/code/ams/amshome_fix2025/bin.auto/python3.8/lib/python3.8/site-packages/ase/io/cif.py:401: UserWarning: crystal system 'orthorhombic' is not interpreted for space group Spacegroup(74, setting=1). This may result in wrong setting!\n", " warnings.warn(\n" ] } ], "source": [ "from pymatgen.core.structure import Structure\n", "from pymatgen.io.ase import AseAtomsAdaptor\n", "import scm.plams\n", "from scm.plams import fromASE, toASE, Molecule\n", "from ase.io import read\n", "\n", "\n", "def convert_plams_molecule_to_pymatgen_structure(mol: Molecule) -> Structure:\n", " return AseAtomsAdaptor().get_structure(toASE(mol))\n", "\n", "\n", "mol: scm.plams.Molecule = fromASE(read(cif_file))\n", "\n", "pymatgen_structure: Structure = convert_plams_molecule_to_pymatgen_structure(mol)\n", "\n", "print(f\"{type(mol)=}\")\n", "print(f\"{type(pymatgen_structure)=}\")\n", "print(pymatgen_structure)" ] }, { "cell_type": "markdown", "id": "e5cbf591-feb1-4ce9-b1b4-78d916809637", "metadata": {}, "source": [ "#### Convert pymatgen Structure (periodic) to PLAMS Molecule\n", "\n", "Go through the ASE interface:" ] }, { "cell_type": "code", "execution_count": 24, "id": "ec807839-44a4-4add-9be0-7879045dc747", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(pymatgen_structure)=\n", "type(mol)=\n" ] } ], "source": [ "from pymatgen.io.ase import AseAtomsAdaptor\n", "from pymatgen.core.structure import Structure\n", "from scm.plams import fromASE\n", "from scm.plams import Molecule\n", "\n", "\n", "def pymatgen_structure_to_plams_molecule(pymatgen_structure: Structure) -> Molecule:\n", " return fromASE(AseAtomsAdaptor().get_atoms(pymatgen_structure))\n", "\n", "\n", "print(f\"{type(pymatgen_structure)=}\")\n", "\n", "mol = pymatgen_structure_to_plams_molecule(pymatgen_structure)\n", "print(f\"{type(mol)=}\")" ] }, { "cell_type": "markdown", "id": "149b468f-a1f5-482b-a366-a2628fb179f3", "metadata": {}, "source": [ "#### Convert PLAMS Molecule to pymatgen Molecule (non-periodic)\n", "\n", "pymatgen has a special ``Molecule`` class for non-periodic systems. In PLAMS, the ``Molecule`` class is used for both periodic and non-periodic systems." ] }, { "cell_type": "code", "execution_count": 25, "id": "1e76a470-1c6c-4c51-85d1-4ffd423f6cbf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(plams_molecule)=\n", "type(pymatgen_molecule)=\n", "Full Formula (H12 C12 N2)\n", "Reduced Formula: H6C6N\n", "Charge = 0, Spin Mult = 1\n", "Sites (26)\n", "0 C -1.476270 -1.153160 -0.292796\n", "1 C -2.868920 -1.158810 -0.294692\n", "2 C -3.592260 0.001850 0.038239\n", "3 C -2.868240 1.161590 0.373280\n", "4 C -1.475690 1.154500 0.373398\n", "5 C -0.739311 0.000235 0.041063\n", "6 C 1.476270 1.153160 -0.292796\n", "7 C 0.739311 -0.000235 0.041063\n", "8 C 1.475690 -1.154500 0.373398\n", "9 C 2.868240 -1.161590 0.373280\n", "10 C 3.592260 -0.001850 0.038239\n", "11 C 2.868920 1.158810 -0.294692\n", "12 N 4.990960 0.013853 0.092372\n", "13 N -4.990960 -0.013853 0.092372\n", "14 H -0.945575 -2.057850 -0.582591\n", "15 H -3.407760 -2.066590 -0.565539\n", "16 H -3.406670 2.068040 0.649043\n", "17 H -0.944434 2.059920 0.659738\n", "18 H 0.945575 2.057850 -0.582591\n", "19 H 0.944434 -2.059920 0.659738\n", "20 H 3.406670 -2.068040 0.649043\n", "21 H 3.407760 2.066590 -0.565539\n", "22 H 5.435340 -0.887836 -0.024637\n", "23 H 5.434540 0.731266 -0.466878\n", "24 H -5.434540 -0.731266 -0.466878\n", "25 H -5.435340 0.887836 -0.024637\n" ] } ], "source": [ "import pymatgen.core.structure\n", "import scm.plams\n", "from pymatgen.io.ase import AseAtomsAdaptor\n", "from scm.plams import toASE\n", "\n", "\n", "def convert_plams_molecule_to_pymatgen_molecule(\n", " mol: scm.plams.Molecule,\n", ") -> pymatgen.core.structure.Molecule:\n", " return AseAtomsAdaptor().get_molecule(toASE(mol))\n", "\n", "\n", "plams_molecule = scm.plams.Molecule(xyz_file)\n", "\n", "pymatgen_molecule: pymatgen.core.structure.Molecule = convert_plams_molecule_to_pymatgen_molecule(plams_molecule)\n", "\n", "print(f\"{type(plams_molecule)=}\")\n", "print(f\"{type(pymatgen_molecule)=}\")\n", "print(pymatgen_molecule)" ] }, { "cell_type": "markdown", "id": "8fbfb59a-6e33-4cc3-8ca7-bd3e21b4030f", "metadata": {}, "source": [ "#### Convert pymatgen Molecule (non-periodic) to PLAMS Molecule" ] }, { "cell_type": "code", "execution_count": 26, "id": "bce3f898-2f36-4027-85cf-ce0a2f76b6d3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type(pymatgen_molecule)=\n", "type(mol)=\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymatgen.io.ase import AseAtomsAdaptor\n", "import pymatgen.core.structure\n", "from scm.plams import fromASE\n", "from scm.plams import Molecule\n", "\n", "\n", "def pymatgen_molecule_to_plams_molecule(\n", " pymatgen_molecule: pymatgen.core.structure.Molecule,\n", ") -> scm.plams.Molecule:\n", " return fromASE(AseAtomsAdaptor().get_atoms(pymatgen_molecule))\n", "\n", "\n", "print(f\"{type(pymatgen_molecule)=}\")\n", "\n", "mol = pymatgen_molecule_to_plams_molecule(pymatgen_molecule)\n", "print(f\"{type(mol)=}\")\n", "plot_molecule(mol);" ] } ], "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.8.16" } }, "nbformat": 4, "nbformat_minor": 5 }