Python Stack in Amsterdam Modeling Suite¶
General¶
The Amsterdam Modeling Suite includes a python stack based on the Enthought Python Distribution. In the AMS2020 release, the python version is 3.6.9.
This python stack is completely separate from any other python installations on the system.
All programs within the Amsterdam Modeling Suite launch python via a special command, amspython
.
In previous versions of the Amsterdam Modeling Suite, the command was called startpython
, but starting with AMS2020, the python launcher is called amspython
.
Included modules¶
Some of the included modules are:
numpy (1.11.3) and scipy (0.18.1): Big modules with a lot of functionality for math and science, more information on the SciPy website.
ipython4 (5.1.0): An improved interactive python shell, more information can be found on the iPython website. Can be started with:
$AMSBIN/amsipython
ase (3.19.0): ASE (Atomic Simulation Environment) is a python module for atomistic simulations, more information in the ASE documentation.
matplotlib (1.5.1): A library for plotting data in 2D, more information on the Matplotlib website. We do not ship an interactive backend for matplotlib, so make sure to set a non-interactive backend when using it. For example the Agg backend for PNGs:
import matplotlib matplotlib.use('Agg')
pip (20.0.2): The recommended tool for installing packages from the Python Package Index (PyPI). The pip documentation explains in detail how to use this tool, but for the Python stack shipped with the Amsterdam Modeling Suite all pip commands need to be prefixed with $AMSBIN/amspython -m:
$AMSBIN/amspython -m pip list $AMSBIN/amspython -m pip show scipy $AMSBIN/amspython -m pip search rotate-backups $AMSBIN/amspython -m pip install rotate-backups
flexmd: A module for running MD simulations with adaptive QM/MM regions. Details can be found in the FlexMD documentation.
plams: PLAMS (Python Library for Automating Molecular Simulation) is a collection of tools that aim at providing powerful, flexible and easily extendable Python interface to molecular modeling programs. It takes care of input preparation, job execution, file management and output processing as well as helps with building more advanced data workflows. See the PLAMS tutorials and PLAMS documentation for more information.
autografs: AuToGraFS stands for Automatic Topological Generator for Framework Structures. Information and examples can be found in the AuToGraFS documentation.
Using other modules with the AMS Python Stack¶
You can extend the the AMS Python Stack with other modules. You can use pip (see above) to install additional modules if they are available on the Python Package Index (PyPI). This is the recommended way of installing packages:
$AMSBIN/amspython -m pip install name_of_package
You can also do this for your own packages that you develop, for example:
$AMSBIN/amspython -m pip install -e .
Alternatively, you can add the location of the source to the SCM_PYTHONPATH
variable to make the module available in the AMS Python Stack. To avoid collisions with other python installations on the system, we unload PYTHONPATH
and PYTHONHOME
from the environment when launching the ADF Python Stack and put the content of SCM_PYTHONPATH
into PYTHONPATH
.
Hint
If you for some reason have to use the PYTHONPATH variable and are unable to use SCM_PYTHONPATH, you can modify $AMSBIN/amspython and $AMSBIN/amsipython to not have it cleared when starting python.
Python virtual environment¶
Default python virtual environment¶
Starting with AMS2020, the amspython
command by default checks for a python virtual environment inside the user’s home directory. If it does not find a virtual environment, it will create one in the following location (these are the default values for the SCM_PYTHONDIR
environment variable):
- Windows:
$USERPROFILE/.scm/python
- Mac:
$HOME/Library/Application Support/SCM/python
- Linux:
$HOME/.scm/python
amspython
then launches the python binary located inside the virtual environment.
If you install additional packages via pip (see above), they will be installed into the virtual
environment’s site-packages
.
Virtual environments for different AMS versions¶
The virtual environment is tied to the major release version of AMS, which is reflected in the name of the virtual environment directory (e.g. AMS2020.1.venv).
Thus, upgrading from AMS2020.101 to AMS2020.102 will automatically let you use all python packages that you installed into the AMS2020.101 virtual environment.
To use previously installed python packages when upgrading from AMS2020.101 to e.g. AMS2020.301 or AMS2021.101, simply copy or rename AMS2020.1.venv to AMS2020.3.venv or AMS2021.1.venv in the same directory.
If you have several installations of different major releases of the Amsterdam Modeling Suite on the same computer, multiple virtual environments will also be created, one for each installation.
Changing the location of the python virtual environment¶
Set the SCM_PYTHONDIR
environment variable to a directory in which the
virtual environment will be installed. If you use the graphical user interface
(GUI), this environment variable can be changed in the GUI preferences. If you
use the command line, set it in your amsbashrc.sh
. If you use both the GUI
and the command line, you should change it in both places.
Disabling the virtual environment¶
Follow the steps for changing the location of the python virtual environment, but set SCM_PYTHONDIR
to be empty.
Uninstalling the virtual environment¶
Just delete the directory containing the virtual environment. This will also delete any packages that you have installed into it.
Reinstalling the virtual environment¶
To force a reinstallation of the virtual environment, even if it already
exists, run $AMSBIN/amspython --install_venv
. This will not remove any
packages inside the virtual environment.
Useful commands¶
Start a python shell:
$AMSBIN/amspython
Install new packages via pip:
$AMSBIN/amspython -m pip install name_of_package
Find out the location of an installed package (e.g. numpy):
$AMSBIN/amspython -c 'import numpy; print(numpy.__file__)'
Find out which python binary is launched by amspython:
$AMSBIN/amspython -c 'import sys; print(sys.executable)'
Disable the virtual environment (one-time):
SCM_PYTHONDIR='' $AMSBIN/amspython