schrodinger.utils.pymol module¶
Utilities to load Maestro projects into PyMOL.
Example:
>>> cmd = PymolInstance(["/path/to/pymol"])
>>> pt = maestro.project_table_get()
>>> process_prj(cmd, pt)
Copyright Schrodinger LLC, All rights reserved.
Author: Thomas Holder
- class schrodinger.utils.pymol.Mapping¶
Bases:
object
Mappings from Maestro codes to PyMOL representations and settings
- surface_cmd = {0: 'isosurface', 1: 'isomesh', 2: 'isodot'}¶
- ramp_colors = {'rainbow': '[red, yellow, green, cyan, blue, magenta]', 'redwhiteblue': '[red, white, blue]', 'whiteblue': '[white, blue]', 'whitered': '[white, red]'}¶
- stereomethods = {'anaglyph': 'anaglyph', 'chromadepth': 'off', 'crosseyed': 'crosseye', 'hardware': 'quadbuffer', 'interlaced': 'byrow', 'walleyed': 'walleye'}¶
- class schrodinger.utils.pymol.PymolInstance(pymol_command=('pymol',))¶
Bases:
object
Represents a remote PyMOL instance (controlled via a one-way pipe)
Acts like a proxy to the cmd module, without return values on function calls (which would actually be very usefull).
See also: PyMOL XMLRPC server (pymol -R)
- __init__(pymol_command=('pymol',))¶
- Parameters
pymol_command (list or tuple) – path to pymol executable
- get_legal_name(name)¶
Replacement for cmd.get_legal_name
- Parameters
name (str) – name candidate
- Returns
legal PyMOL object name
- Return type
str
- get_unused_name(name, alwaysnumber=1)¶
Replacement for cmd.get_unused_name, does not talk back to PyMOL but maintains it’s own set of already used names.
This is only necessary because the the pipe cannot return values.
- Parameters
name (str) – name candidate
alwaysnumber (bool) – if False, only append a number if name already exists
- Returns
unused legal PyMOL object name
- Return type
str
- sendVersionCheck()¶
Print a warning on the PyMOL log window if PyMOL version is too old.
- do(cmmd)¶
Send command to PyMOL
- Parameters
cmmd (str) – PyMOL command
- Returns
True on success and False on error
- Return type
bool
- close()¶
Quit PyMOL
- class schrodinger.utils.pymol.PymolScriptInstance(pymol_command=('pymol',))¶
Bases:
schrodinger.utils.pymol.PymolInstance
Represents a PyMOL script for deferred execution.
- close(args=('-cqk',))¶
Close file handle and execute script in PyMOL
- Parameters
args (list or tuple) – extra command line arguments for pymol
- __init__(pymol_command=('pymol',))¶
- Parameters
pymol_command (list or tuple) – path to pymol executable
- do(cmmd)¶
Send command to PyMOL
- Parameters
cmmd (str) – PyMOL command
- Returns
True on success and False on error
- Return type
bool
- get_legal_name(name)¶
Replacement for cmd.get_legal_name
- Parameters
name (str) – name candidate
- Returns
legal PyMOL object name
- Return type
str
- get_unused_name(name, alwaysnumber=1)¶
Replacement for cmd.get_unused_name, does not talk back to PyMOL but maintains it’s own set of already used names.
This is only necessary because the the pipe cannot return values.
- Parameters
name (str) – name candidate
alwaysnumber (bool) – if False, only append a number if name already exists
- Returns
unused legal PyMOL object name
- Return type
str
- sendVersionCheck()¶
Print a warning on the PyMOL log window if PyMOL version is too old.
- class schrodinger.utils.pymol.VisRecord(row, idx)¶
Bases:
object
Represents a surface entry in a “vis_list” file
- Variables
name_pymol (str) – PyMOL object name
visfile (str) – filename of vis file
- class schrodinger.utils.pymol.VisRecordVol(row, idx)¶
Bases:
schrodinger.utils.pymol.VisRecord
Represents a volume entry in a “vis_list” file
Volume gets auto-loaded when accessing name_pymol.
- class schrodinger.utils.pymol.RowProxy(row, cmd)¶
Bases:
schrodinger.project.project.ProjectRow
Proxy for project table row to attach additional data.
- __init__(row, cmd)¶
- Parameters
row (
schrodinger.project.ProjectRow
) – project table rowcmd (
PymolInstance
) – PyMOL API proxy
- doGroup(name)¶
Put name in PyMOL group, if row is in a Maestro group.
- Parameters
name (str) – PyMOL object name
- property cms_file¶
Return associated CMS file or None if there is no associated file
- property cms_structure_reader¶
Return StructureReader for associated CMS file or EmptyIterator if there is no associated file
- property deletable¶
Whether the entry is deletable or not
- delete()¶
Delete this row/entry from the project.
- doc = 'Inclusion state of the entry (NOT_IN_WORKSPACE/IN_WORKSPACE/LOCKED_IN_WORKSPACE)\nWARNING: This property should NOT be treated as a boolean.'¶
- property entry_id¶
Entry ID of the row
- getStructure(props=True, copy=True, workspace_sync=True)¶
- Returns
The entry’s structure
- Return type
structure.Structure
- Parameters
props (bool) – Whether the associated PT properties are included in the returned structure (default).
copy – Whether to return a copy of the PT structure (default). If set to False, returns the original CT for the entry. Such use should in general be avoided, except as an optimization. NOTE: With copy=False, when the returned CT is modified, the changes are instantly propagated to the PT, but not the Workspace, and changes to properties do not propagate. Unless it’s certain that properties didn’t change, and that the structure is not included in the Workspace, any changes to it should be followed up by a call to setStructure().
workspace_sync – If this entry is included in Workspace, sync the Workspace with Project Table before retreiving entry’s structure. As an optimization, when getStructure() is called in a loop, call maestro.project_table_synchronize(), then call getStructure() with workspace_sync=False for each entry.
WARNING: The current default (copy=True) is to make a duplicate of the entry’s structure. These will be marked for garbage collection once they go out of scope in the calling code, but if, for example, you are in a loop your memory usage will grow until the loop is exited (and it may even take a while for it to drop since garbage collection is not necessarily immediate). This can cause large memory usage if, for example, you are iterating over a large number entries. In some cases you may want to explicitly delete the returned Structure. For example, in a loop iterating over a large number of entries you may want to delete the Structure while still in the loop (after you’re done processing the Structure) to prevent memory bloat.
- property group¶
EntryGroup for the row
- inWorkspace()¶
Obsolete. Use ProjectRow.in_workspace property instead.
- property in_workspace¶
Inclusion state of the entry (NOT_IN_WORKSPACE/IN_WORKSPACE/LOCKED_IN_WORKSPACE) WARNING: This property should NOT be treated as a boolean.
- includeOnly(scroll_to_row=False)¶
Include this entry in the workspace and exclude all other entries.
- Parameters
scroll_to_row (bool) – If True, scroll to the included row in case it’s out of view.
- property index¶
Internal Project index of the row. This is different from Project Table row number or from entry ID.
- property is_selected¶
Whether the entry is selected
- moveToGroup(group_name)¶
Move this entry to group. If group does not exist it will be created.
- Parameters
group_name (str) – Name of group to which to move this entry. If such group doesn’t exist, it will be created. Note, this is different from the user-visible group title.
- newMolecularSurface(*args, **kwargs)¶
Create a new molecular surface for this row
- Parameters
name (str) – The name of the surface. Note that project rows require all surfaces to be named uniquely. See
overwrite
.asl (str or NoneType) – If given, the surface will only be created for atoms in the structure that match the provided ASL. Note that only one of
asl
andatoms
may be given. If neither are given, then the surface will be created for all atoms in the structure.atoms (list or NoneType) – An optional list of atom numbers. If given, the surface will only be created for the specified atoms. Note that only one of
asl
andatoms
may be given. If neither are given, then the surface will be created for all atoms in the structure.resolution (float) – The resolution of the surface, generally between 0 and 1. Smaller numbers lead to a more highly detailed surface.
probe_radius (float) – The radius of the rolling sphere used to calculate the surface. Defaults to 1.4 if
mol_surf_type
issurface.MolSurfType.Molecular
orsurface.MolSurfType.Extended
. May not be given ifmol_surf_type
issurface.MolSurfType.vdw
.vdw_scaling (float) – If given, all atomic radii will be scaled by the provided value before the surface is calculated.
mol_surf_type (
surface.MolSurfType
) – The type of surface to create.overwrite (bool) – What to do if the new surface has the same name as an existing surface for this project row. If True, the existing surface will be overwritten. In False, a ValueError will be raised.
- Returns
The new surface
- Return type
project_surface.Surface
- property property¶
Dictionary-like container of entry properties. Keys are strings of the form
type_family_name
as described instructure.PropertyName
documentation.
- property read_only¶
Whether the entry is read only or not
- property row_number¶
This is the Project Table row number, as it appears to the user in Maestro. It is different from the internal row index.
- selectOnly()¶
Select this entry and de-select all other entries in the Project Table.
- setStructure(struct, props=True, copy=True, sync_workspace=True)¶
Set the structure of the entry to the specified structure. If the entry is included in the Workspace, the Workspace CT will be updated accordingly.
- Parameters
struct (schrodinger.structure.Structure) – Set the entry to this Structure object
copy (bool) – If True, a copy of the Structure (CT) is made and that copy is used to set the entry. If False, the original Structure, struct, is placed into the project table. Doing this hands off control of struct and you should no longer use struct.
props (bool) – If True, update properties in the entry. If False, properties are ignored.
sync_workspace (bool) – Whether to update the maestro workspace
- property structure¶
This attribute is deprecated. Please use ProjectRow.getStructure() and ProjectRow.setStructure() instead.
- property surface¶
A dictionary of all surfaces for this row. Keys are surface names and values are
project_surface.Surface
objects. :type:project_surface.SurfaceDict
- property surfaces¶
Return an interator to the surface objects available for this entry
- property title¶
The title of the entry
- ungroup()¶
Remove this entry from its current group.
- schrodinger.utils.pymol.select_surf_asl(row, surf_handle, name='')¶
Make a PyMOL selection for surface ASL.
- Returns
PyMOL selection name
- class schrodinger.utils.pymol.WorkspaceIdMapper(prj_handle)¶
Bases:
object
Maps workspace atom indices to (row.index, ID)
- __init__(prj_handle)¶
- Parameters
prj_handle (
schrodinger.project.Project
) – project handle
- schrodinger.utils.pymol.get_measurement_items(key, mmprojadmin)¶
Get workspace atom ids from the measurements table. If not running from Maestro, read the .tab files from the .mmproj-admin directory.
- Parameters
key (str) – one of distance, angle or dihedral
- Return type
list(int)
- Returns
List of lists of atom ids (workspace)
- schrodinger.utils.pymol.create_selection(cmd, idmapper, atom_ids)¶
Create selection list of strings from atom ids. Like this [‘1fjs & id 345’, ‘1fjs & id 571’]
- Parameters
cmd (PymolInstance) – PyMOL API proxy
idmapper (WorkspaceIdMapper) – id mapper
atom_ids (list) – atom ids
- Returns
selection list of strings
- schrodinger.utils.pymol.get_interaction_data()¶
Get interactions data
- Returns
interactions data
- schrodinger.utils.pymol.create_interactions_group(cmd, interaction_name, object_names)¶
Create interactions group
- Parameters
cmd (PymolInstance) – PyMOL API proxy
interaction_name (string) – interaction’s name
object_names (string) – space separated string of object names which will be added to the group
- schrodinger.utils.pymol.create_pi_pi_interaction_distance(cmd, idmapper, interaction_data_list, interaction_name, color)¶
Create workspace Pi Pi interaction as a distance object in PyMOL
- Parameters
cmd (PymolInstance) – PyMOL API proxy
idmapper (WorkspaceIdMapper) – id mapper
interaction_data_list (list) – list of interactions
interaction_name (string) – interaction’s name
name (string) – rgb color
- schrodinger.utils.pymol.create_pi_cation_interaction_distance(cmd, idmapper, interaction_data_list, interaction_name, color)¶
Create workspace Pi Cation interaction as a distance object in PyMOL
- Parameters
cmd (PymolInstance) – PyMOL API proxy
idmapper (WorkspaceIdMapper) – id mapper
interaction_data_list (list) – list of interactions
interaction_name (string) – interaction’s name
name (string) – rgb color
- schrodinger.utils.pymol.create_interaction_distance(cmd, idmapper, interaction_data_list, interaction_name, color)¶
Create workspace interaction as a distance object in PyMOL
- Parameters
cmd (PymolInstance) – PyMOL API proxy
idmapper (WorkspaceIdMapper) – id mapper
interaction_data_list (list) – list of interactions
interaction_name (string) – interaction’s name
name (string) – rgb color
- schrodinger.utils.pymol.process_interactions(cmd, prj_handle)¶
Send workspace interactions to PyMOL
- Parameters
cmd (PymolInstance) – PyMOL API proxy
prj_handle (schrodinger.project.Project) – project handle
- schrodinger.utils.pymol.process_measurements(cmd, prj_handle)¶
Send workspace measurements to PyMOL
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyprj_handle (
schrodinger.project.Project
) – project handle
- schrodinger.utils.pymol.get_font_id(font_name, font_style)¶
Get the PyMOL label_font_id which best matches the given font name and style.
- Return type
int
- schrodinger.utils.pymol.process_highlights(cmd, prj_handle)¶
Send “highlights” (label+arrow annotation) to PyMOL
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyprj_handle (
schrodinger.project.Project
) – project handle
- schrodinger.utils.pymol.process_prj(cmd, prj_handle, limit='all', with_surf=True, mimic=True, include_trajectories=False)¶
Send maestro project to PyMOL. By default send everything, optional filters may apply.
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyprj_handle (
schrodinger.project.Project
) – project handlelimit (str) – all, included or selected. The latter will not send workspace items like measurements and text highlights.
with_surf (bool) – send surfaces and maps (volumes)
mimic (bool) – use PyMOL settings to match style as close as possible
include_trajectories (bool) – include trajectories
- schrodinger.utils.pymol.process_watermap(cmd: schrodinger.utils.pymol.PymolInstance, row: schrodinger.project.project.ProjectRow)¶
Process watermaps. Get watermap sites from structure and send them to PyMOL as colored spheres
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyrow (
schrodinger.project.ProjectRow
) – project table row
- schrodinger.utils.pymol.process_hypothesis(cmd, row, mae)¶
Import Phase pharmacophores as CGOs into PyMOL.
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyrow (
schrodinger.project.ProjectRow
) – project table rowmae (str) – reference mae filename
- schrodinger.utils.pymol.process_row(cmd, proj, row, limit_included=False, with_surf=True, mimic=True, include_trajectories=False)¶
Send a row from the project table to PyMOL.
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyproj (
schrodinger.project.Project
) – projectrow (
schrodinger.project.ProjectRow
) – project table rowlimit_included (bool) – limit surface export to workspace
with_surf (bool) – send surfaces
mimic (bool) – use PyMOL settings to match style as close as possible
include_trajectories (bool) – include trajectories
- schrodinger.utils.pymol.process_trajectory(cmd, proj, row, mae_file_name, mimic=True)¶
Send trajectory to PyMOL
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyproj (
schrodinger.project.Project
) – projectrow (RowProxy - proxy for project table with additional data) – project table row
mae_file_name (str) – mae file name to send to PyMOL
mimic (bool) – use PyMOL settings to match style as close as possible
- schrodinger.utils.pymol.process_surface(cmd, row, e_surf)¶
Send a surface to PyMOL
- Parameters
cmd (
PymolInstance
) – PyMOL API proxyrow (
RowProxy
) – project table rowe_surf (
schrodinger.project.EntrySurface
) – surface
- schrodinger.utils.pymol.send_maestro_settings(cmd)¶
Map Maestro settings to closest matching PyMOL settings.
- Parameters
cmd (
PymolInstance
) – PyMOL API proxy- Return type
bool
- Returns
True on success and False if Maestro is not available