schrodinger.application.matsci.espresso.qeinput module

Classes and functions to deal with XML input generation for Quantum Espresso.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.espresso.qeinput.DataType(engine, path)

Bases: tuple

engine

Alias for field number 0

path

Alias for field number 1

schrodinger.application.matsci.espresso.qeinput.deep_update(source, overrides)

Override/append source dict values using overrides dict, return a new dict. Everything is deepcopied to prevent unexpected changes.

Parameters:
  • source (dict) – Source dictionary
  • overrides (dict) – Dictionary to override with
Return type:

dict

Returns:

Updated dictionary

schrodinger.application.matsci.espresso.qeinput.validate_value(name, value, allowed_values)

Check that value is in list of allowed values.

Parameters:
  • name (str) – Name of the variable
  • value (str or int or float) – Value of the variable
  • allowed_values (list) – List of values
Raises:

ValueError – If value is not in list

class schrodinger.application.matsci.espresso.qeinput.GenericType

Bases: object

Generic class for different input types.

updateWithData(data)

Update attributes from data. Set object attribute from data. Example: self.attribute = self.data.get(attribute)

Parameters:data (dict) – Dictionary of settings
class schrodinger.application.matsci.espresso.qeinput.BandsType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to bands.

TOT_CHARGE_KEY = 'total_charge'
TOT_MAG_KEY = 'total_magnetization'
MIN_EMPTY_BANDS = 10
DEFAULTS = {'nbnd': 0, 'nbnd_empty_percent': 20.0, 'occupations': 'smearing', 'smearing_degauss': 0.01, 'smearing_type': 'gaussian', 'total_charge': 0.0, 'total_magnetization': -1.0}
class schrodinger.application.matsci.espresso.qeinput.BasisType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to basis.

GAMMA_ONLY_KEY = 'gamma_only'
DEFAULTS = {'ecutrho': 0.0, 'ecutwfc': 0.0, 'fft_grid': [], 'fft_smooth_grid': [], 'gamma_only': False}
class schrodinger.application.matsci.espresso.qeinput.ElectronControlType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to electron control.

DEFAULTS = {'conv_thr': 1e-06, 'diago_cg_maxiter': 20, 'diago_full_acc': False, 'diago_thr_init': 0.0, 'diagonalization': 'davidson', 'max_steps': 100, 'mixing_beta': 0.7, 'mixing_mode': 'plain', 'mixing_ndim': 8, 'real_space_q': False}
class schrodinger.application.matsci.espresso.qeinput.KpointsType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to k-points.

KPTS_MESH_KEY = 'kpts_mesh'
AUTOMATIC_BAND = 'automatic'
DEFAULTS = {'kpts_band': False, 'kpts_band_line_density': 20, 'kpts_dens': 0, 'kpts_dens_force_gamma': False, 'kpts_list': [], 'kpts_mesh': [6, 6, 6, 1, 1, 1]}
KPTS_TYPES = {'kpts_mesh', 'kpts_dens', 'kpts_band', 'kpts_list'}
setStructure(struct)

Set structure in self.struct and several other attributes: self.vecs and self.alat.

Parameters:struct (structure.Structure) – Structure used for k-point generation (‘kpts_dens’ case)
getNKpts()

Get total number of k-points based on k-points definition. If k-points type is defined, throw a ValueError.

Return type:int
Returns:Number of k-points
Raises:ValueError – If k-points type is not defined
matdynStr()

Get kpoint list suitable for matdyn input.

Return type:str
Returns:Kpoint list
class schrodinger.application.matsci.espresso.qeinput.SpinType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to spin.

DEFAULTS = {'spin_type': ''}
SPIN_NON_LSDA_ID = 1
SPIN_LSDA_ID = 2
getNSpin()

Get nspin based on the spin settings.

Returns:Spin type in the PW integer representation
Return type:int
class schrodinger.application.matsci.espresso.qeinput.VdwType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to vdw type.

DEFAULTS = {'correction': '', 'london_rcut': 200, 'london_s6': 0.75, 'xdm_a1': 0.6836, 'xdm_a2': 1.5045}
class schrodinger.application.matsci.espresso.qeinput.HybridType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to hybrid functional type.

SCREEN_PARAM_KEY = 'screening_parameter'
DEFAULTS = {'ecutvcut': 0.7, 'exxdiv_treatment': 'gygi-baldereschi', 'qpts_mesh': [1, 1, 1], 'screening_parameter': 0.106, 'x_gamma_extrapolation': True}
class schrodinger.application.matsci.espresso.qeinput.DftUType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to Dft U.

DEFAULTS = {'structure_type': None}
class schrodinger.application.matsci.espresso.qeinput.DftType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to dft type.

DEFAULTS = {'dftu': {'structure_type': None}, 'functional': '', 'hybrid': {'qpts_mesh': [1, 1, 1], 'ecutvcut': 0.7, 'x_gamma_extrapolation': True, 'exxdiv_treatment': 'gygi-baldereschi', 'screening_parameter': 0.106}, 'vdw': {'correction': '', 'london_s6': 0.75, 'london_rcut': 200, 'xdm_a1': 0.6836, 'xdm_a2': 1.5045}}
vdw
hybrid

Get hybrid attribute (self._hybrid).

Returns:Hybrid attribute
Return type:HybridType
dftu

Get DftU attribute from self._dftu.

Returns:Hybrid attribute
Return type:HybridType
class schrodinger.application.matsci.espresso.qeinput.PseudopotentialsType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to pseudopotentials.

DEFAULTS = {'species': {}}
setStructureType(struct_type)

Set structure_type in self.struct_type and atom types in self.st_species.

Parameters:struct_type (StructureType) – Structure type used to calculate number of valence electrons in the cell
getData()

Get pseudopotentials file paths and other related data from the database having the same functional and family.

Return type:dict, float, float, float
Returns:Dict with paths to PPs ({‘element’: ‘path’}), number of valence electrons, max ecutwfc, max ecutrho for elements
class schrodinger.application.matsci.espresso.qeinput.MagSpecies

Bases: object

Class that defines species with starting magnetization.

createUniqueElement(element, mag, hubb_u)

Fill self.data dict. Keys of the self.data are elements. Values are dicts with magnetization as key and unique element as value. Unique element is just the atomic symbol plus (if element has more than one magnetization value) a unique integer. Example: {‘C’: {0.0: ‘C’}, ‘H’: {0.0: ‘H’, 0.1: ‘H1’}}

self.species is a dict where unique elements are keys and elements are values. Example (based on the example above): {‘C’: ‘C’, ‘H’: ‘H’, ‘H1’: ‘H’}

Parameters:
  • element (str) – Element
  • mag (float) – Starting magnetization
  • hubb_u (float) – Hubbard U parameter
Return type:

str

Returns:

Unique element

getMag(element, unique_element)

Get magnetization given element and unique element values.

Parameters:
  • element (str) – Element
  • unique_element (str) – Unique element
Return type:

tuple

Returns:

Starting magnetization and Hubbard U

Raises:

ValueError – If element, unique_element combination is not found

class schrodinger.application.matsci.espresso.qeinput.StructureType(struct, use_symmetry)

Bases: object

Class to generate QE input XML section related to structure.

X = 0
Y = 1
Z = 2
setPrimitiveCell()

Set and use primitive cell found by spglib, if any.

setElements()

Set elements in self.elements and atomic numbers for spglib in self.anums.

getAtomicStructure()

Generate XML input related to atomic_structure.

Return type:str
Returns:cell xml data
getAtomicSpecies(ppfiles)

Generate XML input related to atomic species.

Param:Dictionary containing paths to PPs ({‘Element’: ‘Path’})
Return type:str
Returns:species xml data
fetchPPDB(functional)

Get pseudopotentials file paths and other related data from the database having the same functional and family.

Parameters:functional (str) – DFT Functional (one of the DFT_FUNCTIONALS)
Return type:dict, float, float, float
Returns:Dict with paths to PPs ({‘element’: ‘path’}), number of valence electrons, max ecutwfc, max ecutrho for elements
alignStructWithPlane(vector_index)

Slide structure (self.struct) along the axis such that all atoms are on top of the plane perpendicular to the axis defined by vector_index.

Parameters:vector_index (int) – Vector index (X or Y or Z) to align structure to the perpendicular plane
validateStruct(struct)

Validate provided structure against self.struct.

Parameters:struct (schrodinger.structure.Structure) – Structure to validate
Raises:ValueError – If number of atoms or atomic types differ compared to the initial structure (self.structure)
class schrodinger.application.matsci.espresso.qeinput.ControlType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to control.

DEFAULTS = {'calculation_type': '', 'etot_conv_thr': 1e-05, 'forc_conv_thr': 0.001, 'forces': False, 'prefix': '', 'press_conv_thr': 0.5, 'relax_steps': 50, 'stress': False, 'title': 'Default Title', 'wf_collect': False, 'wf_keep': False}
class schrodinger.application.matsci.espresso.qeinput.SymmetryType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to symmetry.

USE_SYMM_KEY = 'use_symmetry'
USE_PRIM_KEY = 'use_primitive'
GET_STD_CELL = 'get_std_cell'
USE_ALL_FRAC_KEY = 'use_all_frac'
DEFAULTS = {'get_std_cell': False, 'use_all_frac': False, 'use_primitive': False, 'use_symmetry': False}
class schrodinger.application.matsci.espresso.qeinput.FreePositionsType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to Cartesian atomic constraints.

DEFAULTS = {}
static saveConstraint(data, atom)

Static method to save Cartesian atomic constraint.

Parameters:
  • data (list of 3 integers) – Cartesian constraints for each coordinate: 1 - not constrained, 0 - constrained (QE convention)
  • atom (structure._StructureAtom) – Atom to add/modify constraint to
Raises:

ValueError – If data is not a list of 3 elements

static saveTorsionConstraint(struct, indices)

Static method to save torsion angle constraint.

Parameters:
  • struct (structure.Structure) – Structure to add constraint to as a property
  • indices (list) – Atomic indices that describe a torsion angle
Raises:

ValueError – If data is not a list of 3 elements

class schrodinger.application.matsci.espresso.qeinput.InputType(data)

Bases: object

Class to generate QE input XML section related to input.

class schrodinger.application.matsci.espresso.qeinput.NEBInputType(data)

Bases: schrodinger.application.matsci.espresso.qeinput.InputType

Class to generate QE input XML section related to NEB input.

class schrodinger.application.matsci.espresso.qeinput.PHInputType(data)

Bases: schrodinger.application.matsci.espresso.qeinput.InputType

Class to generate QE input XML section related to PHonon input.

class schrodinger.application.matsci.espresso.qeinput.MdType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate XML section related to MD control.

DEFAULTS = {'deltat': 1.0, 'ion_temperature': 'rescale-v', 'nraise': 1, 'tempw': 300.0, 'timestep': 2.0}
class schrodinger.application.matsci.espresso.qeinput.IonControlType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE ionic control XML section related to control.

ION_DYNAMICS_KEY = 'ion_dynamics'
DEFAULTS = {'dynamics': {'ion_temperature': 'rescale-v', 'timestep': 2.0, 'tempw': 300.0, 'deltat': 1.0, 'nraise': 1}, 'ion_dynamics': 'bfgs'}
dynamics

Getter for the dynamics attribute.

Return type:MdType
Returns:dynamics object
class schrodinger.application.matsci.espresso.qeinput.CellControlType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE cell control XML section related to control.

CELL_DYNAMICS_KEY = 'cell_dynamics'
PRESSURE_KEY = 'pressure'
CELL_FACTOR_KEY = 'cell_factor'
CELL_DOFREE_KEY = 'cell_dofree'
DEFAULTS = {'cell_dofree': 'all', 'cell_dynamics': 'bfgs', 'cell_factor': 2.0, 'pressure': 0.0}
CELL_DOFREE_XML = {'2Dshape': 'fix_area', '2Dxy': 'fix_xy', 'shape': 'fix_volume'}
class schrodinger.application.matsci.espresso.qeinput.EsmType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to esm type.

BC_KEY = 'bc'
BC_W_KEY = 'offset'
BC_EFIELD_KEY = 'efield'
DEFAULTS = {'bc': 'bc1', 'efield': 0.0, 'offset': 0.0}
class schrodinger.application.matsci.espresso.qeinput.BoundaryType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to boundary conditions type.

ASSUME_ISOLATED_KEY = 'assume_isolated'
ESM_KEY = 'esm'
EFERMI_KEY = 'efermi'
RELATIVE_POT_KEY = 'relative_pot'
DEFAULTS = {'assume_isolated': '', 'efermi': 0.0, 'esm': {'bc': 'bc1', 'offset': 0.0, 'efield': 0.0}, 'relative_pot': None}
esm

Getter for the esm attribute.

Return type:EsmType
Returns:esm object
class schrodinger.application.matsci.espresso.qeinput.NEBPathType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate QE input XML section related to the NEB path.

DEFAULTS = {'climbing_image': 'no-CI', 'esm': False, 'esm_efermi': 0.0, 'esm_first_image_charge': 0.0, 'esm_last_image_charge': 0.0, 'nimages': 4, 'nsteps': 50, 'optimization_scheme': 'broyden', 'optimize_first_last': False, 'string_method': 'neb', 'use_masses': False}
class schrodinger.application.matsci.espresso.qeinput.PHControlType

Bases: schrodinger.application.matsci.espresso.qeinput.GenericType

Class to generate phonon control input XML section related to control.

DEFAULTS = {'epsil': False, 'prefix': '', 'qpts_mesh': [1, 1, 1]}