AMS’s Conformers is a flexible tool for conformers generation.

This page documents the PLAMS interface to Conformers. For a description of the capabilities and options of the Conformers tool, see the documentation in the AMS user manual.

See also

The conformers generation example in the Examples section of the PLAMS manual.



Import these classes from scm.conformers, not scm.plams !

from scm.conformers import ConformersJob, ConformersResults

The ConformersJob class, which derives from SingleJob class, can be used to set up and run a Conformers calculation.

The input options for the Conformers tool (described here) can be specified in the input.ams branch of a setting object. See the Conformers Generation example.

class ConformersJob(name='conformers', molecule=None, **kwargs)[source]

alias of scm.conformers.plams.interface.ConformersResults

__init__(name='conformers', molecule=None, **kwargs)[source]

Initialize self. See help(type(self)) for accurate signature.


Check if the calculation was successful.

This method can be overridden in concrete subclasses of SingleJob. It should return a boolean value. The definition here serves as a default, to prevent crashing if a subclass does not define its own check(). It always returns True.


This method is meant for internal usage and should not be explicitly called in your script (but it can be overridden in subclasses). Manually calling check() is not thread safe. For a thread safe function to evaluate the state of your job please use ok()


Generate the input file. Abstract method.

This method should return a single string with the full content of the input file. It should process information stored in the input branch of job settings and in the molecule attribute.


Generate the runscript. Abstract method.

This method should return a single string with the runscript contents. It can process information stored in runscript branch of job settings. In general the full runscript has the following form:

[first line defined by job.settings.runscript.shebang]

[contents of job.settings.runscript.pre, when present]

[value returned by get_runscript()]

[contents of, when present]

When overridden, this method should pay attention to .runscript.stdout_redirect key in job’s settings.

classmethod load_external(path, settings=None, molecule=None, finalize=False, jobname=None)[source]

Load an external job from path.

class ConformersResults(*args, **kwargs)[source]

A specialized Results subclass for accessing the results of ConformersJob. Conformers are sorted by energy, from lowest to highest.

__init__(*args, **kwargs)[source]

Initialize self. See help(type(self)) for accurate signature.


Absolute path to the ‘conformers.rkf’ results file


Return the conformer with the lowest energy


Return a list containing all conformers found. The conformers are sorted according to their energy, the first element being the lowest energy conformer.


Return the relative energies of the conformers i.e. the energy of the conformer minus the energy of the lowest conformer found. This list is sorted according to the energy of the conformers, the first element corresponding to the lowest energy conformer. So, by definition, the first element will have an energy of 0.


Return the energies of the conformers. This list is sorted according to the energy of the conformers, the first element corresponding to the lowest energy conformer.


Return the energy of the lowest-energy conformer.


Return the Boltzmann distribution at a given temperature: exp^(E_i/kB*temperature) / (sum_j exp^(E_j/kB*temperature)), where E_i is the energy of conformer i. This list is sorted according to the energy of the conformers, the first element corresponding to the lowest energy (and highest probability) conformer. The temperature is in Kelvin.


Return str(self).


Collect files present in the job folder.

Use parent method from Results to get a list of all files in the results folder. Then instantiate self.rkf to be a KFFile instance for the main conformers.rkf output file. Also instantiate self._conformers to be a Conformers instance built from it.

This method is called automatically during the final part of the job execution and there is no need to call it manually.

The plot_conformers() function (from scm.conformers.plams.plot import plot_conformers) lets you plot some example conformers in a Jupyter notebook:

plot_conformers(job, indices=None, temperature=298, unit='kcal/mol', lowest=True)[source]

Function for plotting conformers in a Jupyter notebook

job: ConformersJob

Finished ConformersJob

indices: None, int or list of int

If None, will plot at most 3 conformers.

If int, will plot at most the given number of conformers.

If list of int (zero-based indices), plot those conformers.

temperature: float

Temperature for relative population (printed above the figure).

unit: str

Unit for relative energies (printed above the figure)

lowest: bool

Only used if indices is an integer. If True, plot the N lowest energy conformers. If False, plot conformers evenly distributed from the most stable to the least stable.