atomate.vasp package

Subpackages

Submodules

atomate.vasp.config module

atomate.vasp.database module

class atomate.vasp.database.VaspCalcDb(host='localhost', port=27017, database='vasp', collection='tasks', user=None, password=None)

Bases: atomate.utils.database.CalcDb

Class to help manage database insertions of Vasp drones

__init__(host='localhost', port=27017, database='vasp', collection='tasks', user=None, password=None)

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

build_indexes(indexes=None, background=True)

Build the indexes.

Args:
indexes (list): list of single field indexes to be built. background (bool): Run in the background or not.
TODO: make sure that the index building is sensible and check for
existing indexes.
get_band_structure(task_id)
get_dos(task_id)
insert_gridfs(d, collection='fs', compress=True, oid=None, task_id=None)

Insert the given document into GridFS.

Args:
d (dict): the document collection (string): the GridFS collection name compress (bool): Whether to compress the data or not oid (ObjectId()): the _id of the file; if specified, it must not already exist in GridFS task_id(int or str): the task_id to store into the gridfs metadata
Returns:
file id, the type of compression used.
insert_task(task_doc, use_gridfs=False)

Inserts a task document (e.g., as returned by Drone.assimilate()) into the database. Handles putting DOS and band structure into GridFS as needed.

Args:
task_doc: (dict) the task document use_gridfs (bool) use gridfs for bandstructures and DOS
Returns:
(int) - task_id of inserted document
reset()
retrieve_task(task_id)

Retrieves a task document and unpacks the band structure and DOS as dict

Args:
task_id: (int) task_id to retrieve
Returns:
(dict) complete task document with BS + DOS included

atomate.vasp.drones module

class atomate.vasp.drones.VaspDrone(runs=None, parse_dos='auto', bandstructure_mode='auto', parse_locpot=True, additional_fields=None, use_full_uri=True, parse_bader=None)

Bases: pymatgen.apps.borg.hive.AbstractDrone

pymatgen-db VaspToDbTaskDrone with updated schema and documents processing methods. Please refer to matgendb.creator.VaspToDbTaskDrone documentation.

__init__(runs=None, parse_dos='auto', bandstructure_mode='auto', parse_locpot=True, additional_fields=None, use_full_uri=True, parse_bader=None)

Initialize a Vasp drone to parse vasp outputs Args:

runs (list): Naming scheme for multiple calcuations in on folder e.g. [“relax1”,”relax2”].
Can be subfolder or extension

parse_dos (str or bool): Whether to parse the DOS. Can be “auto”, True or False. “auto” will only parse DOS if NSW = 0, so there are no ionic steps bandstructure_mode (str or bool): How to parse the bandstructure or not. Can be “auto”,”line”, True or False.

“auto” will parse the bandstructure with projections for NSCF calcs and decide automatically
if it’s line mode or uniform. Saves the bandstructure in the output doc.
“line” will parse the bandstructure as a line mode calculation with projections.
Saves the bandstructure in the output doc.
True will parse the bandstructure with projections as a uniform calculation.
Saves the bandstructure in the output doc.
False will parse the bandstructure without projections to calculate vbm, cbm, band_gap, is_metal and efermi
Dose not saves the bandstructure in the output doc.

parse_locpot (bool): Parses the LOCPOT file and saves the 3 axis averages additional_fields (dict): dictionary of additional fields to add to output document use_full_uri (bool): converts the directory path to the full URI path parse_bader (bool): Run and parse Bader charge data. Defaults to True if Bader is present

as_dict()

A JSON serializable dict representation of an object.

assimilate(path)

Adapted from matgendb.creator Parses vasp runs(vasprun.xml file) and insert the result into the db. Get the entire task doc from the vasprum.xml and the OUTCAR files in the path. Also adds some post-processed info.

Args:
path (str): Path to the directory containing vasprun.xml and OUTCAR files
Returns:
(dict): a task dictionary
filter_files(path, file_pattern='vasprun.xml')

Find the files that match the pattern in the given path and return them in an ordered dictionary. The searched for files are filtered by the run types defined in self.runs. e.g. [“relax1”, “relax2”, …]. Only 2 schemes of the file filtering is enabled: searching for run types in the list of files and in the filenames. Modify this method if more sophisticated filtering scheme is needed.

Args:
path (string): path to the folder file_pattern (string): files to be searched for
Returns:
OrderedDict of the names of the files to be processed further. The key is set from list of run types: self.runs
classmethod from_dict(d)
generate_doc(dir_name, vasprun_files, outcar_files)

Adapted from matgendb.creator.generate_doc

get_valid_paths(path)

There are some restrictions on the valid directory structures:

  1. There can be only one vasp run in each directory. Nested directories are fine.
  2. Directories designated “relax1”…”relax9” are considered to be parts of a multiple-optimization run.
  3. Directories containing vasp output with “.relax1”…”.relax9” are also considered as parts of a multiple-optimization run.
post_process(dir_name, d)

Post-processing for various files other than the vasprun.xml and OUTCAR. Looks for files: transformations.json and custodian.json. Modify this if other output files need to be processed.

Args:
dir_name:
The dir_name.
d:
Current doc generated.
process_bandstructure(vrun)
process_dos(vrun)
process_raw_data(dir_name, taskname='standard')

It is useful to store what raw data has been calculated and exists for easier querying of the taskdoc.

Parameters:
  • dir_name – directory to search
  • taskname – taskname, e.g. “relax1”
Returns:

dict of files present

process_vasprun(dir_name, taskname, filename)

Adapted from matgendb.creator

Process a vasprun.xml file.

schema = {'analysis': {'warnings', 'delta_volume_as_percent', 'delta_volume', 'max_force', 'errors'}, 'calcs_reversed': {'run_type', 'output', 'composition_unit_cell', 'completed_at', 'formula_pretty', 'elements', 'vasp_version', 'has_vasp_completed', 'nelements', 'formula_reduced_abc', 'formula_anonymous', 'composition_reduced', 'input', 'nsites', 'dir_name', 'task'}, 'input': {'hubbards', 'is_hubbard', 'is_lasph', 'structure', 'xc_override', 'potcar_spec', 'pseudo_potential'}, 'output': {'energy_per_atom', 'energy', 'is_metal', 'stress', 'structure', 'is_gap_direct', 'forces', 'cbm', 'bandgap', 'vbm', 'density', 'spacegroup'}, 'root': {'schema', 'state', 'output', 'chemsys', 'analysis', 'composition_unit_cell', 'completed_at', 'formula_pretty', 'elements', 'calcs_reversed', 'run_stats', 'nelements', 'formula_reduced_abc', 'formula_anonymous', 'composition_reduced', 'input', 'nsites', 'dir_name'}}
static set_analysis(max_force_threshold=0.5, volume_change_threshold=0.2)

Adapted from matgendb.creator

set the ‘analysis’ key

validate_doc(d)

Sanity check. Make sure all the important keys are set

atomate.vasp.powerups module

atomate.vasp.submission_filter module

class atomate.vasp.submission_filter.SubmissionFilter(is_valid=True, potcar_exists=True, max_natoms=200, is_ordered=True, not_in_MP=True, MAPI_KEY=None, require_bandstructure=False)

Bases: pymatgen.alchemy.filters.AbstractStructureFilter

NO_POTCARS = ['Po', 'At', 'Rn', 'Fr', 'Ra', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr']
__init__(is_valid=True, potcar_exists=True, max_natoms=200, is_ordered=True, not_in_MP=True, MAPI_KEY=None, require_bandstructure=False)

Initialize a submission filter for checking that structures are valid for calculations.

Args:
is_valid (bool): If true, checks structure validity potcar_exists (bool): If true, ensures all elements have VASP PAW_PBE POTCAR max_natoms (int): If not None, ensures structure has <=max_natoms atoms is_ordered (bool): If true, ensures structure is ordered not_in_MP (bool): If true, ensures structure not in MP MAPI_KEY (str): For MP checks, your MAPI key if not previously set as config var require_bandstructure (bool): For MP checks, require a band structure calc
as_dict()

A JSON serializable dict representation of an object.

classmethod from_dict(d)
test(structure)

Method to execute the test.

Returns:
(bool) Structures that return true are kept in the Transmuter object during filtering.

atomate.vasp.vasp_config module

atomate.vasp.vasp_powerups module

Module contents