schrodinger.application.jaguar.utils module

Jaguar utility functions.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.jaguar.utils.FreeEnergy(temp, gibbs, property_key)

Bases: tuple

temp: float

Alias for field number 0

gibbs: float

Alias for field number 1

property_key: str

Alias for field number 2

__contains__(key, /)

Return key in self.

__len__()

Return len(self).

count(value, /)

Return number of occurrences of value.

index(value, start=0, stop=9223372036854775807, /)

Return first index of value.

Raises ValueError if the value is not present.

class schrodinger.application.jaguar.utils.ChgAt(index, charge)

Bases: tuple

index: int

Alias for field number 0

charge: int

Alias for field number 1

__contains__(key, /)

Return key in self.

__len__()

Return len(self).

count(value, /)

Return number of occurrences of value.

class schrodinger.application.jaguar.utils.LewisStructure(charges, bonds, score, unpaired)

Bases: tuple

charges: List[schrodinger.application.jaguar.utils.ChgAt]

Alias for field number 0

bonds: List[Tuple[int, int]]

Alias for field number 1

score: float

Alias for field number 2

unpaired: bool

Alias for field number 3

__contains__(key, /)

Return key in self.

__len__()

Return len(self).

count(value, /)

Return number of occurrences of value.

index(value, start=0, stop=9223372036854775807, /)

Return first index of value.

Raises ValueError if the value is not present.

class schrodinger.application.jaguar.utils.LewisModes(value)

Bases: enum.IntEnum

An enumeration.

STD = 0
PRINT = 1
RINGCHAIN = 2
THOROUGH = 3
FINDALL = 4
schrodinger.application.jaguar.utils.append_outfiles_to_recover_file(recover_file: str, outfiles: Iterable[str])

Append list of output file paths to a YAML-format .recover file.

Parameters
  • recover_file – .recover file name

  • outfiles – output file paths

schrodinger.application.jaguar.utils.get_jobname(prefix: str, str_to_hash: str) str

Construct a jobname based on the given string prefix (typically the backend script name) and a string to be hashed (typically based on the cmdline being used to invoke the job.)

schrodinger.application.jaguar.utils.restart_name(input_name: str, mae_name: Optional[str] = None) str

Wrapper to extract restartname from mmjag routine

Allows for calls where mae_name is not defined or where input name is an empty string (would cause segfault in mmjag function)

schrodinger.application.jaguar.utils.basic_windows_path(dos_path: str) str

Convert extended length Windows path to standard. Does nothing on other OS’s.

Parameters

dos_path – a (Windows) file path, which may have WINDOWS_EXTENDED_PATH_TAG to indicate extended path length

Returns

A file path which has not extended length tags

schrodinger.application.jaguar.utils.get_stoichiometry_string(atom_list: List[str]) str

Take atom list and return stoichiometry string. For example, atom_list = [‘H’, ‘H’, ‘O’] yields stoichiometry string = ‘H2O’.

Parameters

atom_list – list of element names

Returns

stoichiometry string

schrodinger.application.jaguar.utils.validate_stoichiometry(reactants: List[jin.JaguarInput], products: List[jin.JaguarInput]) Optional[str]

This function validates stoichiometry for a reaction defined by the list of reactants and products. If stoichiometry is not valid this function return text string explaining what was wrong. In case of valid stoichiometry returns None.

Parameters
  • reactants – list of JaguarInput objects for reactants

  • products – list of JaguarInput objects products

Returns

string with warning message or None

schrodinger.application.jaguar.utils.base_functional(func: str) str

Extract basename of DFT functional

Removes a posteriori model suffixes from the functional, e.g. B3LYP-D3 -> B3LYP PBE0-d -> PBE0 b3lyp-loc-MM -> b3lyp

Parameters

func – full name of functional, case-insensitive

Returns

functional name, with corrections (e.g. dispersion, LOC) removed

schrodinger.application.jaguar.utils.get_number_electrons(st: schrodinger.structure._structure.Structure) int

Count the number of electrons disregarding charges.

Parameters

st – the structure

Returns

the number of electrons

schrodinger.application.jaguar.utils.get_total_charge(structure: schrodinger.structure._structure.Structure) int

Return the total charge of the structure If the property i_m_Molecular_charge is defined we use that, else we sum the formal charges

Parameters

structure – whose total charge must be calculated

Returns

total charge of structure

schrodinger.application.jaguar.utils.elmnt_mult_dict() Dict[str, int]

make a dictionary of element:multiplicity for all neutral elements up to Oganesson (118)

The values are from the ground state term symbol as reported by NIST at http://physics.nist.gov/PhysRefData/Elements/index.html as of 4.2014

schrodinger.application.jaguar.utils.remove_gibbs_energies(st: schrodinger.structure._structure.Structure, allowed_temps: Tuple = ())

Remove gibbs energy properties from a structure but allow some exceptions. This allows one to ‘unclutter’ the project table.

Parameters
  • st – structure containing gibbs energy properties

  • allowed_temps – temperatures that are allowed to remain as properties

schrodinger.application.jaguar.utils.parse_gibbs_energies(st: schrodinger.structure._structure.Structure, inf_sep: bool = False, std_conc: bool = False)

Extract the temperature, gibbs energy and property keys for free energy and store these in a dict relating temperature to FreeEnergy instances.

Parameters
  • st – the structure

  • inf_sep – True indicates infinitely separated energy

  • std_conc – True indicates Gibbs energy at std state concentration

Returns

a dict relating temperature to a FreeEnergy instance with attributes storing these data

schrodinger.application.jaguar.utils.gibbs_energy_property_string(temp: float, inf_sep: bool = False, std_conc: bool = False) str

Construct the property key string for Gibbs energy at a particular temperature

Parameters
  • temp – temperature in Kelvin

  • inf_sep – True indicates infinitely separated energy

  • std_conc – True indicates Gibbs energy at std state concentration

Returns

a property key string

schrodinger.application.jaguar.utils.convert_gibbs_energy_to_std_conc(st: schrodinger.structure._structure.Structure) Dict

Convert std state (1 atm) Gibbs energies to a std state of 1 Molar concentration. The energies are returned as a dict relating temperature to FreeEnergy instances. The energies are also stored as structure level properties. This is intended to be used with AutoTS for rate calculations and we assume the free energies were computed at 1 atm of pressure.

Parameters

st – the structure

Returns

a dict relating temperature to a FreeEnergy instance with attributes storing these data

schrodinger.application.jaguar.utils.compute_std_conc_gibbs_energy(gibbs: float, temp: float, press: float, con: float) float

Convert Gibbs energy which was computed at a pressure of press to a concentration of con using the formula G = G_0 + kT log(CRT/P_0) where we’ve used the ideal gas law to relate P = CRT

Parameters
  • gibbs – Gibbs free energy in a.u. evaluated at a pressure of press

  • press – Pressure at which the Gibbs energy was evaluated in atm

  • temp – Temperature at which the Gibbs energy was evaluated in Kelvin

  • con – Concentration which defines the standard state in moles/Liter

schrodinger.application.jaguar.utils.group_items(items: List, comparator: Callable, *args) List[List]

Put items into groups using a comparator.

These will be returned as a list of lists, each list representing a group. The first item of the first group will be the first item in the list items. The groups have the property that Comparator(item1, item2, args) returns True for all pairs in a group.

Parameters
  • items – a list of items to group

  • comparator – this function compares two items and returns a boolean indicating whether they are equivalent.

  • args (argument list) – arguments passed to the comparator which is called as comparator(item1, item2, *args)

Returns

a list of lists of items

schrodinger.application.jaguar.utils.beta_au(temp: float) float

Beta = 1/kT in a.u.

schrodinger.application.jaguar.utils.beta_kcalmol(temp: float) float

Beta = 1/kT in kcal/mol

schrodinger.application.jaguar.utils.copy_structure_bonding(ref_st: schrodinger.structure._structure.Structure, updated_st: schrodinger.structure._structure.Structure)

Copy all bonding and formal charges from reference structure onto a structure instance we want to update. Also update FF atom-typing. Assumes number of atoms and atom numbering is the same in both structures.

Parameters
  • ref_st – structure to copy bonding from

  • updated_st – structure to copy bonding to

schrodinger.application.jaguar.utils.sync_dummy_atoms(ref_st: schrodinger.structure._structure.Structure, st: schrodinger.structure._structure.Structure)

Sync dummy atoms in ref_st and st. This is useful after calling mmjag_connect to reset bonding. We check atomic number and XYZ coordinates to classify which atoms are the “same” or “different”. But note for dummy atoms, we do not require XYZ to be the same.

We then try to sync the two structures by handling two possibilities:

  1. Existence of new dummy atoms at the end of the atom list in ref_st compared to st; they will be added to the end of st.

  2. Non-existence of dummy atoms at any location in ref_st compared to st; they will be deleted from st.

Parameters
  • ref_st – structure to copy atoms from

  • st – structure to copy atoms to

Raises

AssertionError – Fails to sync

schrodinger.application.jaguar.utils.mmjag_reset_connectivity(st: schrodinger.structure._structure.Structure)

Reset connectivity and Lewis structure using mmjag algorithm. i.e input st is modified to have new bonds, bond orders and formal charges. All other properties should be preserved.

Parameters

st – structure to clean up

schrodinger.application.jaguar.utils.mmjag_update_lewis(st: schrodinger.structure._structure.Structure, mode: schrodinger.application.jaguar.utils.LewisModes = LewisModes.STD) Optional[List[schrodinger.application.jaguar.utils.LewisStructure]]

Update Lewis structure for a given connectivity using mmjag algorithm. This can be used instead of, or to complement, e.g. the mmlewis code. Unlike mmjag_reset_connectivity, the connectivity will be preserved.

If mode is LewisModes.PRINT, the lewis structure determination information will be returned

If mode is LewisModes.RINGCHAIN, special Lewis structure scoring for ring-chain tautomers will be used (and lewis structure information will be returned)

If mode is LewisModes.THOROUGH, the lewis structure search will be lengthened

If mode is LewisModes.FINDALL, the lewis structure search will be lengthened and suboptimal results will be included in the output data (which is sorted to have the best first).

If the mmjag Lewis code fails to update the bonding, the original bonding will be preserved.

Parameters
  • st – structure to clean up

  • mode – specifies if std or ring-chain scoring should be used and whether the data is returned from lewis.cpp. Only STD, PRINT, RINGCHAIN, THOROUGH, and FINDALL are acceptable values

Returns

If mode is PRINT, RINGCHAIN, THOROUGH, or FINDALL, parsed lewis structure data is returned as namedtuple; an empty list is returned if mode is STD.

schrodinger.application.jaguar.utils.parse_lewis_data(lewis_data: List[str]) List[schrodinger.application.jaguar.utils.LewisStructure]

Parse the string-formatted Lewis data from mmjag into a data structure for easy use.

Parameters

lewis_data – the line-by-line output of mmjag/lewis.cpp run on a structure

Returns

NamedTuples containing charge, multiple bond, and score

schrodinger.application.jaguar.utils.get_charges(lewis_output: List[str]) Tuple[List[List[schrodinger.application.jaguar.utils.ChgAt]], List[bool]]

Parse charges from lewis code string output

Parameters

lewis_output – the line-by-line output of mmjag/lewis.cpp run on a structure

Returns

For each structure in the lewis_output (the length of the list), list of the charged atom and their charges, whether structure contains unpaired spins

schrodinger.application.jaguar.utils.get_bonds(lewis_output: List[str]) List[List[Tuple[int, int]]]

Parse bonds from lewis code string output

Parameters

lewis_output – the line-by-line output of mmjag/lewis.cpp run on a structure

Returns

For each structure in the lewis_output (the length of the list), list of the multiple bonds in the structure (NB: a triple bond is noted by being present in the list twice)

schrodinger.application.jaguar.utils.get_scores(lewis_output: List[str]) List[float]

Parse scores from lewis code string output

Parameters

lewis_output (list of strings) – the line-by-line output of mmjag/lewis.cpp run on a structure

Return type

list of floats

Returns

For each structure in the lewis_output (the length of the list), that structures score according to the mmjag/lewis.cpp code (see there for more details)

schrodinger.application.jaguar.utils.apply_lewis(st: schrodinger.structure._structure.Structure, lewis_st: schrodinger.application.jaguar.utils.LewisStructure) schrodinger.structure._structure.Structure

Return a copy of a structure with a Lewis structure as described by the LewisStructure given.

Parameters
  • st – structure on which to apply Lewis structure

  • lewis_st – Namedtuple containing charge, multiple bond, and score

Returns

a structure with the desired Lewis structure applied

class schrodinger.application.jaguar.utils.GenOptions(kwdict=None)

Bases: object

A class to convert keyword value pairs defined in a single string into a data structure, and allow them to be converted back into a string.

Here are some example strings:

'igeopt=1 mp2=3'
'igeopt=1 maxitg=1 iacc=1'
eq_re = re.compile('\\s*=\\s*')
key_val_re = re.compile('(?P<key>[^= ]+)=(?P<value>[^= \\n]+(\\s+\\d+)?)\\s*')
OK = 0
PARTIAL = 1
ERROR = 2
__init__(kwdict=None)
static fromString(string)

Create a GenOptions instance from the provided string.

static testString(string, gen_options=None)

Test the state of the provided string. If gen_options is provided, set its values based on the keyword value pairs in the string.

Parameters

string (str)

Input string to read for settings.

gen_options (GenOptions)

A gen_options instance to modify according to the values in ‘string’.

toString()
commandLineOptions()
isEquivalent(other)