PLAMS - Python Library for Automating Molecular Simulation
==========================================================
Overview
--------
PLAMS is a flexible and extensible toolkit for streamlining molecular simulation workflows.
It simplifies and automates the process of configuring, running and analyzing computational chemistry calculations.
The key features of PLAMS are:
- **Amsterdam Modeling Suite (AMS) Integration**: Full support for interacting with AMS programs
- **Parallel Processing**: Run jobs in parallel without any need for separate parallelization scripts
- **Scheduler Integration**: Integration with job schedulers such as SLURM making large-scale computations easier to manage
- **Automatic File and Folder Organization**: PLAMS automatically handles file organization, preventing overwrites and ensuring clean data flows
- **Controllable Re-runs and Restarts**: Efficiently manage job executions by preventing redundant runs and easily restarting from crash points if needed
- **Output processing**: Extract, post-process, and analyze results, ensuring that only relevant data is used for further calculations or workflows
- **Compatibility with Chemistry Tools**: Includes built-in interfaces for popular programs and packages such as ASE, RDKit, Dirac, ORCA, CP2K, DFTB+ and Crystal and more
Quick Start
-----------
PLAMS is available to all users of AMS "out of the box" as part of the [AMS Python Stack](https://www.scm.com/doc/Scripting/Python_Stack/Python_Stack.html), which can be accessed with the ``$AMSBIN/amspython`` command.
For most use-cases, no specific installation outside of AMS is required. For usage outside of `amspython`, please see the installation guide below.
To get started with PLAMS, import `scm.plams` into your python script or jupyter notebook.
Then, follow one of the examples to help create your script e.g.
```python
# water_opt.py
from scm.plams import from_smiles, AMSJob
from scm.input_classes import drivers, engines
water = from_smiles("O")
driver = drivers.AMS()
driver.Task = "GeometryOptimization"
driver.Properties.NormalModes = "Yes"
driver.Engine = engines.ForceField()
driver.Engine.Type = "UFF"
job = AMSJob(molecule=water, settings=driver, name="water_opt")
results = job.run()
print("Optimized geometry:")
print(results.get_main_molecule())
```
Running the command `$AMSBIN/amspython water_opt.py` produces the successful output:
```
JOB water_opt RUNNING
JOB water_opt FINISHED
JOB water_opt SUCCESSFUL
Optimized geometry:
Atoms:
1 O -0.000360 0.403461 0.000000
2 H -0.783821 -0.202431 0.000000
3 H 0.784180 -0.201030 0.000000
Bonds:
(1)--1.0--(2)
(1)--1.0--(3)
```
For more advanced workflows including usage of other AMS engines, see the other examples.
Installation Guide
------------------
As mentioned, PLAMS and all its required and optional dependencies are included as part of the AMS python stack.
This is the easiest way to use PLAMS, as it requires no additional installation process.
However, if you want to use PLAMS outside of `amspython`, since `AMS2024.103` PLAMS is available on [PyPI](https://pypi.org/project/plams).
and so can be installed via the `pip` python package installer.
To install the latest version of PLAMS into your python environment, simply run `pip install plams`.
To install a specific version of PLAMS (e.g. `2025.101`), run `pip install plams==2025.101`.
By default, PLAMS only installs a minimal set of required packages on installation using pip.
For additional functionality, further optional packages are required.
Since `AMS2025`, these are available for installation through extra dependency groups with pip.
The available groups are:
- **chem**: for chemistry packages such as `RDKit`, `ase`
- **analysis**: for packages used to analyse and plot results of calculations e.g. `scipy`, `matploblib`, `networkx`
- **ams**: for technical packages for use with the AMS interface
One or more of these can be installed using the command `pip install 'plams[chem,analysis,ams]'`.
Users of the AMS will also have to install the `scm.amspipe` package using the command `pip install $AMSHOME/scripting/scm/amspipe`.
A final option is to download PLAMS directly from the [GitHub page](https://github.com/SCM-NV/PLAMS).
[Released versions](https://github.com/SCM-NV/PLAMS/releases) are available since `AMS2024.103`.
The latest (unreleased) development version can be downloaded from the [trunk branch](https://github.com/SCM-NV/PLAMS/archive/refs/heads/trunk.zip).
Once the downloaded zip file has been extracted, navigate to its location and run `pip install .` to install into your python environment.
License
-------
See [LICENSE.md](https://github.com/SCM-NV/PLAMS/blob/trunk/LICENSE.md) for details.
Contributing
------------
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/SCM-NV/PLAMS/blob/trunk/CONTRIBUTING.md) for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "plams",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Software for Chemistry and Materials <info@scm.com>",
"keywords": "molecular modeling, computational chemistry, workflow",
"author": null,
"author_email": "Software for Chemistry and Materials <info@scm.com>",
"download_url": "https://files.pythonhosted.org/packages/65/4e/27a4ea0cad07e090632ba7aac8cacca2cd480b432f66e7f9bb93e94fe147/plams-2025.104.tar.gz",
"platform": null,
"description": "PLAMS - Python Library for Automating Molecular Simulation\n==========================================================\n\nOverview\n--------\n\nPLAMS is a flexible and extensible toolkit for streamlining molecular simulation workflows.\n\nIt simplifies and automates the process of configuring, running and analyzing computational chemistry calculations.\nThe key features of PLAMS are:\n\n- **Amsterdam Modeling Suite (AMS) Integration**: Full support for interacting with AMS programs\n- **Parallel Processing**: Run jobs in parallel without any need for separate parallelization scripts\n- **Scheduler Integration**: Integration with job schedulers such as SLURM making large-scale computations easier to manage\n- **Automatic File and Folder Organization**: PLAMS automatically handles file organization, preventing overwrites and ensuring clean data flows\n- **Controllable Re-runs and Restarts**: Efficiently manage job executions by preventing redundant runs and easily restarting from crash points if needed\n- **Output processing**: Extract, post-process, and analyze results, ensuring that only relevant data is used for further calculations or workflows\n- **Compatibility with Chemistry Tools**: Includes built-in interfaces for popular programs and packages such as ASE, RDKit, Dirac, ORCA, CP2K, DFTB+ and Crystal and more\n\nQuick Start\n-----------\n\nPLAMS is available to all users of AMS \"out of the box\" as part of the [AMS Python Stack](https://www.scm.com/doc/Scripting/Python_Stack/Python_Stack.html), which can be accessed with the ``$AMSBIN/amspython`` command.\n\nFor most use-cases, no specific installation outside of AMS is required. For usage outside of `amspython`, please see the installation guide below.\n\nTo get started with PLAMS, import `scm.plams` into your python script or jupyter notebook.\nThen, follow one of the examples to help create your script e.g.\n\n```python\n # water_opt.py\n from scm.plams import from_smiles, AMSJob\n from scm.input_classes import drivers, engines\n\n water = from_smiles(\"O\")\n\n driver = drivers.AMS()\n driver.Task = \"GeometryOptimization\"\n driver.Properties.NormalModes = \"Yes\"\n driver.Engine = engines.ForceField()\n driver.Engine.Type = \"UFF\"\n\n job = AMSJob(molecule=water, settings=driver, name=\"water_opt\")\n results = job.run()\n\n print(\"Optimized geometry:\")\n print(results.get_main_molecule())\n```\n\nRunning the command `$AMSBIN/amspython water_opt.py` produces the successful output:\n\n```\n JOB water_opt RUNNING\n JOB water_opt FINISHED\n JOB water_opt SUCCESSFUL\n Optimized geometry:\n Atoms:\n 1 O -0.000360 0.403461 0.000000\n 2 H -0.783821 -0.202431 0.000000\n 3 H 0.784180 -0.201030 0.000000\n Bonds:\n (1)--1.0--(2)\n (1)--1.0--(3)\n```\n\nFor more advanced workflows including usage of other AMS engines, see the other examples.\n\n\nInstallation Guide\n------------------\n\nAs mentioned, PLAMS and all its required and optional dependencies are included as part of the AMS python stack.\nThis is the easiest way to use PLAMS, as it requires no additional installation process.\n\nHowever, if you want to use PLAMS outside of `amspython`, since `AMS2024.103` PLAMS is available on [PyPI](https://pypi.org/project/plams).\nand so can be installed via the `pip` python package installer.\n\nTo install the latest version of PLAMS into your python environment, simply run `pip install plams`.\nTo install a specific version of PLAMS (e.g. `2025.101`), run `pip install plams==2025.101`.\n\nBy default, PLAMS only installs a minimal set of required packages on installation using pip.\nFor additional functionality, further optional packages are required.\nSince `AMS2025`, these are available for installation through extra dependency groups with pip.\n\nThe available groups are:\n\n- **chem**: for chemistry packages such as `RDKit`, `ase`\n- **analysis**: for packages used to analyse and plot results of calculations e.g. `scipy`, `matploblib`, `networkx`\n- **ams**: for technical packages for use with the AMS interface\n\nOne or more of these can be installed using the command `pip install 'plams[chem,analysis,ams]'`.\n\nUsers of the AMS will also have to install the `scm.amspipe` package using the command `pip install $AMSHOME/scripting/scm/amspipe`.\n\nA final option is to download PLAMS directly from the [GitHub page](https://github.com/SCM-NV/PLAMS).\n[Released versions](https://github.com/SCM-NV/PLAMS/releases) are available since `AMS2024.103`.\nThe latest (unreleased) development version can be downloaded from the [trunk branch](https://github.com/SCM-NV/PLAMS/archive/refs/heads/trunk.zip).\nOnce the downloaded zip file has been extracted, navigate to its location and run `pip install .` to install into your python environment.\n\nLicense\n-------\n\nSee [LICENSE.md](https://github.com/SCM-NV/PLAMS/blob/trunk/LICENSE.md) for details.\n\nContributing\n------------\n\nContributions are welcome. See [CONTRIBUTING.md](https://github.com/SCM-NV/PLAMS/blob/trunk/CONTRIBUTING.md) for details.\n",
"bugtrack_url": null,
"license": "LGPLv3",
"summary": "Python Library for Automating Molecular Simulations",
"version": "2025.104",
"project_urls": {
"Changelog": "https://github.com/SCM-NV/PLAMS/blob/trunk/CHANGELOG.md",
"Documentation": "https://www.scm.com/doc/plams/",
"GitHub": "https://github.com/SCM-NV/PLAMS/",
"Homepage": "https://www.scm.com/doc/plams/"
},
"split_keywords": [
"molecular modeling",
" computational chemistry",
" workflow"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9d183a6cf3c6348b334b3e0e5228b8a8b97946b3859f01df7a9fcdc52970f8d4",
"md5": "cbea30cce4905950365c739252204e4d",
"sha256": "cfc7245e928a56ab0ba91ee6fc3523ecc5bedc12306029bfbcb367b8156af63a"
},
"downloads": -1,
"filename": "plams-2025.104-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cbea30cce4905950365c739252204e4d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 16116918,
"upload_time": "2025-08-18T08:42:55",
"upload_time_iso_8601": "2025-08-18T08:42:55.984326Z",
"url": "https://files.pythonhosted.org/packages/9d/18/3a6cf3c6348b334b3e0e5228b8a8b97946b3859f01df7a9fcdc52970f8d4/plams-2025.104-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "654e27a4ea0cad07e090632ba7aac8cacca2cd480b432f66e7f9bb93e94fe147",
"md5": "bca76476b35a104e037b5fa7ecf143d7",
"sha256": "6c338018fcab28cca7bdc78dd4ef0316b1b62997b27fe37a6e784be2ea3cfcdb"
},
"downloads": -1,
"filename": "plams-2025.104.tar.gz",
"has_sig": false,
"md5_digest": "bca76476b35a104e037b5fa7ecf143d7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 15929491,
"upload_time": "2025-08-18T08:42:59",
"upload_time_iso_8601": "2025-08-18T08:42:59.077392Z",
"url": "https://files.pythonhosted.org/packages/65/4e/27a4ea0cad07e090632ba7aac8cacca2cd480b432f66e7f9bb93e94fe147/plams-2025.104.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-18 08:42:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SCM-NV",
"github_project": "PLAMS",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "plams"
}