schrodinger.application.matsci.geometry module

Utilities for geometry manipulation or property calculation

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.application.matsci.geometry.find_marked_backbone_path(struct, sub_graph)

Find the shortest path based on atoms marked as backbone.

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to find backbone path in.

  • sub_graph ('networkx.classes.graph.Graph') – The graph to find path in structure

Return type:

list or None

Returns:

list of nodes in the path in the graph. The selected path must contain the marked backbone atoms.

schrodinger.application.matsci.geometry.get_backbone_atoms(struct, exclude_hydrogen=True, max_fix=True)

Return dictionary of backbone atoms for each molecule in the structure.

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to find backbone atoms in.

  • exclude_hydrogen (bool) – If true hydrogen will be excluded in creation of graph and searching for backbone atoms. This results in much faster calculation.

  • max_fix (bool) – Whether to fix internal degeneracy when maximum number of path checks are reached

Return dict:

the key of the dictionary is molecule number and the value is the list of backbone atoms. If there are less than two atoms in the molecule the associated value will be an empty list.

schrodinger.application.matsci.geometry.get_ordered_polymer_backbone(struct, backbone_path, remove_side_chain)

Backbone of a polymer chain should follow H–TH–TH–T format, where backbone starts with head and ends with tail.

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to find backbone atoms in.

  • backbone_path (list) – list of atom indexes in the backbone

  • remove_side_chain (bool) – If true it will remove the side chain atoms from the backbone in the start and end.

Return list:

list of atom indexes in the backbone such that first atom is always a head.

schrodinger.application.matsci.geometry.get_ordered_backbone_atoms(struct)

Return dictionary of backbone atoms for each molecule in the structure.

Parameters:

struct (schrodinger.structure.Structure) – The structure to find backbone atoms in.

Return dict(list):

the key of the dictionary is molecule number and the value is the list of backbone atoms

schrodinger.application.matsci.geometry.radius_of_gyration(struct, molecule_coms=False)

Calculate radius of gyration for a structure

Parameters:
  • struct (structure.Structure) – The structure to calculate RG for

  • molecule_coms (bool) – Whether to use center of mass of each molecule in the structure for calculating Rg

Return type:

float

Returns:

The radius of gyration

schrodinger.application.matsci.geometry.fit_structure_to_ellipsoid(struct)

Fit the structure to an ellipsoid and return the ellipsoid semi-axes and principal moments of inertia

The method is taken from https://pubs.acs.org/doi/abs/10.1021/jp047138e and uses the following equations to calculate the semi-axes values: I1 = M/5 * (a**2 + b**2) I2 = M/5 * (a**2 + c**2) I3 = M/5 * (b**2 + c**2) Also see https://en.wikipedia.org/wiki/Ellipsoid#Dynamical_properties

Parameters:

struct (structure.Structure) – The structure to fit to an ellipsoid

Return type:

tuple of (float, float, float, [float, float, float])

Returns:

Tuple of semi-axes values in Angstroms and principal moments of inertia in u * A**2

schrodinger.application.matsci.geometry.fit_points_to_circle(x_vals, y_vals, center_x=None)

Fit 2D points to a circle

Parameters:
  • x_vals (numpy.array) – Array containing point x values

  • y_vals (numpy.array) – Array containing point y values

  • center_x (float) – If provided, this will be the x value of the circle center

Return type:

tuple(float, float, float)

Returns:

Center x value, center y value, and radius

schrodinger.application.matsci.geometry.get_center(st, atom_ids=None)

Get the structure’s center of mass, limited to the given atom_ids. Return None if atom_ids is empty or None

Parameters:
  • st (structure.Structure) – Structure

  • atom_ids (list(int)) – Atom ids for which center of mass has to be calculated

Returns:

centroid given as 3-element array [x, y, z]

Return type:

numpy.array(float) or None