schrodinger.application.matsci.msutils module

Utility functions and classes for MatSci workflows.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.msutils.Forcefield(version, name)

Bases: tuple

__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.

name

Alias for field number 1

version

Alias for field number 0

schrodinger.application.matsci.msutils.get_default_forcefield()[source]

Returns information for S-OPLS if license is found. If no license is found, returns information for OLPS2005, which requires no license.

Returns namedtuple forcefield

Named 2-tuple containing the version and name of the default forcefield, respectively

schrodinger.application.matsci.msutils.remove_properties(struct, props=None, matches=None, atom_props=None, atom_matches=None)[source]

Remove all the matching structure and atom properties. No error is thrown if the given properties do not actually exist on the structure.

Parameters
  • struct (structure.Structure or cms.Cms) – The structure to remove properties from

  • props (list) – A list of structure properties to delete

  • matches (list) – Remove all structure properties whose name contains any of these strings

  • atom_props (list) – A list of atom properties to delete

  • atom_matches (list) – Remove all atom properties whose name contains any of these strings

schrodinger.application.matsci.msutils.remove_atom_property(struct, prop)[source]

Delete atom property from all atoms in a structure (structure will be modified).

Parameters
  • struct (structure.Structure or cms.Cms) – Structure object to be modified

  • prop (str) – Atom property to be removed

schrodinger.application.matsci.msutils.remove_cms_property(cms_model, propname)[source]

Delete a property from a cms model

Parameters
  • cms_model (cms.Cms) – cms model

  • propname (str) – property name

schrodinger.application.matsci.msutils.remove_cms_atom_property(cms_model, propname)[source]

Delete an atom property from a cms model

Parameters
  • cms_model (cms.Cms) – cms model

  • propname (str) – property name

schrodinger.application.matsci.msutils.has_atom_property(struct, prop)[source]

Check if structure has any atom with the property set.

Parameters
  • structure.Structure – Input structure

  • str – Property name

Raises
  • KeyError – If property name doesn’t start with: s_, r_, i_, b_

  • mm.MmException – If unexpected error occurred

Return bool

True of property is present, False otherwise

schrodinger.application.matsci.msutils.getstr(ret)[source]

Convert binary string (or other data) to str.

Parameters

ret (binary_type or any other type convertable to str) – Value to be converted to str

Return type

str

Returns

Value converted to str

schrodinger.application.matsci.msutils.get_project_group_hierarchy(st=None, row=None)[source]

Return the project group hierarchy for the given structure or row.

Parameters
Raises

ValueError – if there is an issue

Return type

list

Returns

the hierarchy (outermost to innermost)

schrodinger.application.matsci.msutils.set_project_group_hierarchy(st, hierarchy, collapsed=False)[source]

Set the project group hierarchy for the given structure.

Parameters
  • st (schrodinger.structure.Structure) – the structure

  • hierarchy (list) – the hierarchy (outermost to innermost)

  • collapsed (bool) – Whether the group should initially be collapsed

schrodinger.application.matsci.msutils.get_matsci_user_data_dir()[source]

Get the absolute path to the user’s local MatSci data directory for storing custom templates, protocols, etc. Directory is created if it doesn’t exist.

Return type

str

Returns

The absolute path the Materials Science data parent directory

schrodinger.application.matsci.msutils.structure_reader(filename, log=None)[source]

Read structures from a file until the end or the first structure with an error.

Parameters
  • filename (str) – filename

  • log (function) – Log function, if None, nothing is called

Yield schrodinger.structure.Structure

Next structure in the file

schrodinger.application.matsci.msutils.is_dummy_atom(atom)[source]

Return True if the given atom is a dummy atom.

Parameters

atom (schrodinger.structure._StructureAtom) – the atom

Return type

bool

Returns

return True if the given atom is a dummy atom

schrodinger.application.matsci.msutils.validate_no_dummy_atoms(structs)[source]

Validate that the passed structures don’t have dummy atoms

Parameters

structs (iterable) – Structures to check

Return type

bool or (bool, str)

Return type

True if no structures has dummy atoms, False and error message if at least one structure does

schrodinger.application.matsci.msutils.add_or_update_bond_order(ct, atom1, atom2, bond_order)[source]

Create a new bond, or update the existing bond order of this bond.

Return type

schrodinger.structure._Bond

schrodinger.application.matsci.msutils.add_or_update_bond_type(ct, atom1, atom2, bond_type)[source]

Create a new bond, or update the existing bond type of this bond.

Return type

schrodinger.structure._Bond

schrodinger.application.matsci.msutils.trim_str(text, max_len, suffix='...')[source]

Trim the string to approximately max_len. Add a suffix if the string is longer than max_len.

Parameters
  • text – String to trim

  • max_len (int) – Max length of the string

  • suffix (str) – Suffix to add if the string is to be trimmed

Return str

Trimmed string

schrodinger.application.matsci.msutils.mmlewis_apply()[source]

Context manager that initializes mm and returns mm.mmlews_apply method.

Yield

mm.mmlewis_apply method.

Example usage:

with msutils.mmlewis_apply() as lewis_apply:

assert lewis_apply(struct) is None

schrodinger.application.matsci.msutils.get_atom_ffio_velocity(atom)[source]

Get FFIO atom velocities.

Parameters

atom (structure._StructureAtom) – Input atom

Return numpy.array

Array of velocities

schrodinger.application.matsci.msutils.set_atom_ffio_velocity(atom, velocity)[source]

Set FFIO atom velocities.

Parameters
schrodinger.application.matsci.msutils.get_unique_name(new_name, existing_names)[source]

Add a suffix to new_name to make a unique name if it already exists in existing_names.

Parameters
  • new_name (str) – The new name

  • existing_names (list) – Existing names

Return type

str

Returns

The unique version of new_name

schrodinger.application.matsci.msutils.get_next_name(name)[source]

Get the next customer facing name. For example, ‘xx’ gives ‘xx (1)’ and ‘xx (n)’ gives ‘xx (n + 1)’

Parameters

name (str) – The name based on which the next is generated

Return type

str

Returns

The unique version of new_name

schrodinger.application.matsci.msutils.setting_to_bool(string, empty_is_false=True)[source]

Convert a yes/no/true/false/1/0/on/off type string to a Python boolean

Parameters
  • string (str) – The string to convert

  • empty_is_false – If the string is empty or None, return False

Return type

bool

Returns

True if the string is a “true”-y word (TRUE, true, t, yes, on, 1, etc), False if it is a “false”-y word (FALSE, false, f, no, off, 0).

Raises
  • ValueError – If the string cannot be interpreted in a True/False manner

  • AttributeError – If something other than a string is passed in

schrodinger.application.matsci.msutils.flatten(alist, afunc=None)[source]

Flatten the given list into a set.

Parameters
  • alist (list) – elements contain iterable data

  • afunc (function or None) – function used to extract iterable data from the given list elements or None if there isn’t one

Return type

set

Returns

a flattened set of data from the given list

schrodinger.application.matsci.msutils.get_atomic_element(atomic_number)[source]

Given atomic number return chemical element.

Parameters

atomic_number (int) – Atomic number

Return type

str

Returns

Chemical element

schrodinger.application.matsci.msutils.ignore_ssl_warnings()[source]

Context manager to temporarily ignore InsecureRequestWarning warning.

schrodinger.application.matsci.msutils.get_index_from_default_name(atom_name)[source]

Find the atom index from string of element name and atom index

Parameters

atom_name (str) – concatenated string of element symbol with the atom index

Rtype index

int or None

Para atom_index

Atom index

schrodinger.application.matsci.msutils.title_case(original, exceptions=('an', 'of', 'the', 'for'), skip_single_letters=True)[source]

Convert the string to title case, optionally ignoring articles and single letters

Examples with default kwargs: “Number of molecules”: “Number of Molecules” “axis b”: “Axis b”

Parameters
  • original (str) – The string to make title case

  • exceptions (tuple) – The words to not capitalize

  • skip_single_letters (bool) – Whether single letters should not be capitalized

Return type

str

Returns

The string in title case

schrodinger.application.matsci.msutils.generate_smiles(struct)[source]

Return a SMILES string for st.

For more options, see the schrodinger.structutils.smiles.SmilesGenerator class.

Parameters

struct (Structure) – Structure for which SMILES string is desired.

Return type

str

Returns

SMILES string representing st.

schrodinger.application.matsci.msutils.get_common_property_names(sts)[source]

Return the property names that all of the given structures have in common.

Parameters

sts (list[schrodinger.structure.Structure]) – the structures to search

Return type

set[str]

Returns

the common property names

schrodinger.application.matsci.msutils.get_common_float_property_names(sts)[source]

Return the float property names that all of the given structures have in common.

Parameters

sts (list[schrodinger.structure.Structure]) – the structures to search

Return type

set[str]

Returns

the common float property names

schrodinger.application.matsci.msutils.get_common_atom_property_names(sts)[source]

Return the property names that all atoms of the given structures have in common.

Parameters

sts (list[schrodinger.structure.Structure]) – the structures to search

Return type

set[str]

Returns

the common atom property names

schrodinger.application.matsci.msutils.get_common_float_atom_property_names(sts)[source]

Return the float atom property names that all of the given structures have in common.

Parameters

sts (list[schrodinger.structure.Structure]) – the structures to search

Return type

set[str]

Returns

the common float atom property names

schrodinger.application.matsci.msutils.is_coarse_grain(struct, by_atom=False)[source]

Check if struct is a coarse grain structure

Parameters
  • struct (schrodinger.structure.Structure) – The structure to check

  • by_atom (bool) – If True, check each atom to see if it is coarse grain and return True if any atom is coarse grin. If False, check only for the coarse grain structure property. True is useful when the structure has been obtained via maestro.workspace_get, which removes structure-level properties, or if the structure may be a mixed atomistic/coarse-grained structure.

Return type

bool

Returns

True if it is a coarse grain structure, False if not

schrodinger.application.matsci.msutils.structure_reader_to_3d(file_path, require_stereo=False)[source]

Read structures from a file and return 3D representations.

Parameters
Return type

list[schrodinger.structure.Structure]

Returns

3D structures

schrodinger.application.matsci.msutils.keyword_string_to_dict(keystring)[source]

Return a dictionary whose keys are keywords and values are keyword values

Parameters

keystring (str) – The keywords are taken from this string - keywords must be in the keyword=value format and whitespace delimited.

Return type

dict

Returns

Dictionary of keyword/value pairs

Raises

ValueError – if any tokens do not match the keyword=value format

schrodinger.application.matsci.msutils.keyword_dict_to_string(keydict)[source]

Return a string of keywords specified by keydict.

Parameters

keydict (dict) – Dictionary - keys are Jaguar keywords, values are keyword values of str type

Return type

str

Returns

A string of space-separated keyword=value pairs