schrodinger.application.matsci.msutils module

Utility functions and classes for MatSci workflows.

Copyright Schrodinger, LLC. All rights reserved.

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.roundup(inp)[source]

Round away from zero (to +/-infinity).

Parameters

inp (float or numpy.array) – value to be rounded

Return type

float or numpy.array

Returns

Rounded value

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.sig_fig_round(value, significant_figure=5)[source]
Parameters
  • value (float) – change the significant figures of this value

  • significant_figure (int) – significant figure of the displayed value

Return type

str

Returns

str representation of a number with proper significant figures

schrodinger.application.matsci.msutils.get_significant_figures(number)[source]

Get significant digits of a number

Parameters

number (float or int or str) – number to find significant digits

Return type

int

Returns

number of significant digits

schrodinger.application.matsci.msutils.set_significant_figures(number, sig_fig)[source]

Set significant digits of a number

Parameters
  • number (float or int) – number to set significant digits

  • sig_fig (int) – number of significant digits

Return type

float

Returns

number with desired significant digits

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.polyfit(xdata, ydata, degree)[source]

Fit a polynomial of rang degree to data.

Parameters
  • xdata (numpy.array) – X data

  • ydata (numpy.array) – Y data

  • degree (int) – Degree of the fitting polynomial

Return type

numpy.array, float

Returns

Fitting coefficients, coefficient of determination (R^2)

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_disorder_groups(struct)[source]

Get atoms that have s_cif_disorder_group set and occupancies are not 0 or 1.

Parameters

structure.Structure – Input structure

Return type

dict or None

Returns

Dict with keys disorder group labels, values list of atom indices or None if nothing is present in the structure

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.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.remove_pbc_props(struct)[source]

Remove the pbc properties of the given structure.

Parameters

struct (schrodinger.structure.Structure) – crystal structure from which all the pbc properties are to be removed

schrodinger.application.matsci.msutils.get_trajectory_frames(options, frames=None)[source]

Return a generator for trajectory frames in the range that the user specified, as well as the number of frames

Requires that trajectory flags in parserutils are used in the parser.

Parameters
  • options (argparse.Namespace) – Parsed commandline options

  • frames (iterable or None) – Trajectory frames. If not provided, they will be read from the path in options

Return type

generator, int

Returns

The trajectory frame generator, and the number of frames

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.