schrodinger.application.matsci.freevolume module¶
Analyzes free volume in a structure
Copyright Schrodinger, LLC. All rights reserved.
- class schrodinger.application.matsci.freevolume.GridRadius(grid, radius)¶
Bases:
tuple
- grid¶
Alias for field number 0
- radius¶
Alias for field number 1
- exception schrodinger.application.matsci.freevolume.FatalCoordinateError¶
Bases:
Exception
Raised if something is wrong with matching the current coordinates to the ones used to compute free volume. Typically and atom number or element mismatch
- schrodinger.application.matsci.freevolume.archive_folder(filename, archive_folder)¶
Archive and delete the passed folder
- Parameters
filename (str) – Filename of the archived file
archive_folder (str) – The folder to archive
- schrodinger.application.matsci.freevolume.unarchive_surf_data(struct)¶
Unarchive the free volume surface folders related to the passed structure
- Parameters
struct (
schrodinger.structure.Structure
) – The structure for which freevolume was calculated
- schrodinger.application.matsci.freevolume.get_free_volume_structure(struct)¶
Get the structure that the free volume calculation was run on
- Parameters
struct (
schrodinger.structure.Structure
) – The structure that contains the properties that point to the free volume structure- Return type
schrodinger.structure.Structure
or None- Returns
The structure from the free volume calculation or None if it couldn’t be found (due to missing property or file)
- schrodinger.application.matsci.freevolume.check_coordinates_changed(struct)¶
Check that the given structure matches the structure the free volume calculation was run on. In addition to basic number/type of atoms, the coordinates must also be the same since the void data has XYZ information incorporated in it.
- Parameters
struct (
schrodinger.structure.Structure
) – The structure that contains the properties that point to the free volume structure- Return type
schrodinger.structure.Structure
, False, or None- Returns
False if the structures match (number of atoms, elements and XYZ),
Structure
if the coordinates do not match - in this case the returned structure is a structure with the original free volume coordinates suitable for passing to fix_free_volume_coordinates, None if the free volume structure couldn’t be found (due to missing property or file)- Raises
FatalCoordinateError – If something unfixable does not match between the two structures, such as number of atoms or elements
- schrodinger.application.matsci.freevolume.fix_free_volume_coordinates(struct, fv_struct=None)¶
Change the coordinates of struct to be those from the free volume calculation. Note that this assumes check_coordinates_changed has been called first (and the results dealt with).
The structure is modified in-place
- Parameters
struct (structure.Structure) – The structure to modify
struct – The structure with the coordinates to transfer to struct. If not given, the structure obtained by get_free_volume_structure will be used.
- schrodinger.application.matsci.freevolume.get_xlink_type_atoms(struct)¶
Get atom indexes for atoms that are either crosslinkable, crosslinked or both.
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to look for atoms in.- Return type
set, set, set
- Returns
In order, indexes for atoms that are both crosslinked AND crosslinkable, atoms that are crosslinkable, atoms that are crosslinked. The sets are mutually exclusive.
- schrodinger.application.matsci.freevolume.get_atom_layers(atom, origin, num_layers, layer_width, axis)¶
Get the range of layers that the given atom would intersect.
- Parameters
atom (
schrodinger.structure._StructureAtom
) – The atom to find the layers fororigin (float) – The offset to add to each layer because the system starts at a point other than zero. The offset is along the axis defined by the axis parameter.
num_layers (int) – The number of layers
layer_width (float) – The width of each layer
axis (int) – 0, 1 or 2 to indicate the layers are cross sections of the X, Y or Z axis
- Return type
list
- Returns
Each item of the list is a layer the atom intersects based on its VdW radius
- schrodinger.application.matsci.freevolume.extract_grid_and_radius(word)¶
Given a string, extract the floating point grid spacing and probe radius values
- Parameters
word (str) – The string to extract the grid & radius from
- Return type
- Returns
The GridRadius namedtuple with the extracted values
- schrodinger.application.matsci.freevolume.get_grid_radius_property_values(struct, propbase)¶
Get all the grid and radius values for properties on the structure that begin with the given base string.
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to extract the properties frompropbase (str) – The starting string for properties to search for
- Return type
dict
- Returns
Keys are GridRadius instances, values are the property value for that set of grid/radius values.
- schrodinger.application.matsci.freevolume.get_file_data(struct, propbase, file_reader, override_path=None)¶
Use file_reader to extract the data from the files specified by the given structure properties
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to get data forpropbase (str) – The starting string for properties to search for
file_reader (callable) – The function that will read the data from the file
override_path (str or None) – If given, look for files in this directory rather than the one specified in the structure property
- Return type
(
OrderedDict
, list)- Returns
Keys of the dict are
GridRadius
objects, values are the data extracted from the file for that set of Grid and Radius values. keys are orderd by (radius, grid) sort order. Each item of the list is a str that gives the path of a file that could not be located.
- schrodinger.application.matsci.freevolume.read_volume_file(path)¶
Read the void volume data file located at path
- Parameters
path (str) – The path to the file
- Return type
list
- Returns
The volumes from the file, each item is a float
- schrodinger.application.matsci.freevolume.read_trj_volume_file(path)¶
Read the trajectory void volume data file located at path
- Parameters
path (str) – The path to the file
- Return type
dict
- Returns
The volumes from the file where the key is the frame id and values are list of volume in that frame
- schrodinger.application.matsci.freevolume.read_void_file(path)¶
Read the void data file located at path
- schrodinger.application.matsci.freevolume.read_trj_void_file(path)¶
Read the all frames void data files located inside the path
- Parameters
path (str) – The path to the void files folder
- Return type
dict
- Returns
Dictionary where the key is the frame id and value is the void data for the frame. Void data is a dictionary where keys are INFO and VOIDS. INFO value is a
VoidInfo
object, VOIDS value is a list ofVoid
objects sorted from largest to smallest.
- schrodinger.application.matsci.freevolume.get_volume_data(struct, path=None, read_trj=False)¶
Get all the volume data available for the given structure
- Parameters
struct (
schrodigner.structure.Structure
) – The structure to get volume data forpath (str or None) – If given, look for files in this directory rather than the one specified in the structure property
read_trj (bool) – Read trajectory analysis volume data if True, else will read the static structure analysis data.
- Return type
(See read_volume_file or read_trj_volume_file function, list)
- Returns
The volume data collected from struct, and a list of paths to files that could not be read
- schrodinger.application.matsci.freevolume.get_voids_data(struct, path=None, read_trj=False)¶
Get all the void data available for the given structure
- Parameters
struct (
schrodigner.structure.Structure
) – The structure to get volume data forpath (str or None) – If given, look for files in this directory rather than the one specified in the structure property
read_trj (bool) – Read trajectory analysis void data if True, else will read the static structure analysis data.
- Return type
(See read_void_file or read_trj_void_file function, list)
- Returns
The volume data collected from struct, and a list of paths to the files that could not be read.
- schrodinger.application.matsci.freevolume.create_surface_from_void(void, void_info)¶
Create void surface
- class schrodinger.application.matsci.freevolume.JsonObject¶
Bases:
object
Base class for custom objects that can be serialized and deserialized by json
- jsonData()¶
Return a json-serializable object for this instance
- Return type
dict
- Returns
A json-serializable object for this instance
- classmethod fromJsonData(data)¶
Create a new VoidInfo object from json data
- Parameters
data (dict) – A dict such as returned by the jsonData method
- Return type
class
- Returns
A new class object created using the data in dict
- class schrodinger.application.matsci.freevolume.VoidInfo(origin, numxyz, spacing, periodic, probe)¶
Bases:
schrodinger.application.matsci.freevolume.JsonObject
Holds general information about the void calculation
- __init__(origin, numxyz, spacing, periodic, probe)¶
Create a VoidInfo object
- Parameters
origin (iterable) – The x, y, z coordinates of the grid origin
numxyz (iterable) – The number of gridpoints in the x, y and z direction
spacing (iterable) – The spacing of gridpoints in the x, y and z direction
periodic (bool) – Whether the grid is periodic
probe (float) – The probe radius used in the void calculation
- getNodeXYZ(node)¶
Get the xyz coordinates a node represents
- Parameters
node (tuple) – A graph node (a, b, c) for coordinate a, b, c in the grid
- Return type
list
- Returns
[x, y, z] coordinates of the node
- class schrodinger.application.matsci.freevolume.Void(size=0, volume=0, nodes=None, surf_name=None, surf_comment=None, surf_file=None)¶
Bases:
schrodinger.application.matsci.freevolume.JsonObject
Holds information about a single Void
- __init__(size=0, volume=0, nodes=None, surf_name=None, surf_comment=None, surf_file=None)¶
Create a Void instance
- Parameters
size (int) – The number of nodes in the void
volume (float) – The volume the void represents
nodes (iterable) – The collection of grid nodes that make up the void
surf_name (str) – Name of the surface of the void
surf_comment (str) – Comment for the surface of the void
surf_file (str) – Name of the surface file associated with the current void
- exception schrodinger.application.matsci.freevolume.FreeVolumeException¶
Bases:
Exception
Raised if something goes wrong with computing the Free Volume
- class schrodinger.application.matsci.freevolume.FreeVolumeDriver(grid=0.25, probe=1.4, generic_title='free_volume', logger=None, verbose=True, only_large_void_surf=True)¶
Bases:
object
Driver to compute Free Volume
- __init__(grid=0.25, probe=1.4, generic_title='free_volume', logger=None, verbose=True, only_large_void_surf=True)¶
Create a FreeVolumeDriver instance
- Parameters
grid (float) – The requested grid spacing
probe (float) – The probe radius
generic_title (str) – The title to use if a structure does not have one
logger (None or
logging.logger
) – If None, no logging will be done and FreeVolumeException will be raised if an error occurs. If a logger, logging will be done and the system will exit on an error.verbose (bool) – Turns on additional logging
only_large_void_surf (bool) – Will calculate surface of all voids if True. If case of False it will calculate surface of voids with volume greater than 1 A^3.
- property is_cms¶
- Return type
bool
- Returns
whether the last structure loaded into the driver was a Cms object
- log(msg, is_verbose=False, **kwargs)¶
Log a message if logging is being used
- Parameters
msg (str) – The message to log
Additional keyword arguments are passed to
textlogger.log_msg
- logError(msg, **kwargs)¶
Log an error message if logging is being used and exit, otherwise raise an Exception.
- Parameters
msg (str) – The message to log
Additional keyword arguments are passed to
textlogger.log_error
- Raises
FreeVolumeException – if self.logger
SystemExit – if not self.logger
- findFreeVolume(struct)¶
Find the free volume in the structure. Results are stored as properties on the structure
- Parameters
struct (
schrodinger.structure.Structure
orcms.Cms
) – The structure/system to find the free volume in- Raises
FreeVolumeException – if the PBC dimensions are too small or memory usage grows too large and no logger exists
SystemExit – if the PBC dimensions are too small or memory usage grows too large and a logger exists
- getVoidVolumes()¶
Get the volume of each void
- Return type
list
- Returns
A list of void volumes. Each item is a float.
- getPropName(propbase)¶
Get the property name with grbit for the class added as a suffix to the passed property base name.
- Parameters
propbase (str) – the property basename (prefix) to add the grbit to
- Return type
str
- Returns
property name with grbit added to it
- getFreeVolumeData()¶
Calculate the absolute free volume and free volume percentage from the analyzed graph
- Return type
(float, float)
- Returns
Tuple with two values. First is the absolute free volume and second is the free volume percentage.
- defineVoids()¶
Define all the voids found in the structure
- volumeOfGraph()¶
Get the current total volume of the graph
- Return type
float
- Returns
The volume of all the remaining nodes in the graph
- getVoidData(voids_filename, archive_data=True)¶
Get the void data from the current analysis
- Parameters
voids_filename (str) – name of the voids json file
archive_data (bool) – whether to archive void data. Archiving helps transferring of files easier.
- Return type
dict
- Returns
Keys are INFO and VOIDS. INFO value is a
VoidInfo
object, VOIDS value is a list ofVoid
objects sorted from largest to smallest.
- createSurfaces(voids, void_info, surf_folder)¶
Create a surfaces for voids larger than 1 A^3 and store them inside surf folder. Also set the name, comment, and location of the created surface file for the void as an attribute in the void.
- writeFiles(basename=None)¶
Write all the data to files
The actual node graph is written to a pkl file
The void data is written to a json file
The volumes are written to a simple text file, one volume per line
The structure is written to a Maestro file
- Parameters
basename (str) – Use this instead of the structure title as the base file name
- Return type
str, str, str
- Returns
The paths to the files written (volume file, void file, graph file)
- getBasename()¶
Get the basename from the structure
- Return type
str
- Returns
basename from structure title or the generic name cleaned and uniquified.
- clearGraph()¶
Clear out the graph for this driver to preserve memory space