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'}¶
-
__init__
¶ Initialize self. See help(type(self)) for accurate signature.
-
-
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 (str) – 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 (str) – extra command line arguments for pymol
-
__init__
(pymol_command='pymol')¶ Parameters: pymol_command (str) – 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.ProjectRow
Proxy for project table row to attach additional data.
-
__init__
(row, cmd)¶ Parameters: - row (
schrodinger.project.ProjectRow
) – project table row - cmd (
PymolInstance
) – PyMOL API proxy
- row (
-
doGroup
(name)¶ Put name in PyMOL group, if row is in a Maestro group.
Parameters: name (str) – PyMOL object name
-
cms_file
¶ Return associated CMS file or None if there is no associated file
-
cms_structure_reader
¶ Return StructureReader for associated CMS file or EmptyIterator if there is no associated file
-
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.'¶
-
entry_id
¶ Entry ID of the row
-
getStructure
(props=True, copy=True)¶ Returns: The entry’s structure
Return type: structure.Structure
Parameters: - props (bool) – Whether the accociated 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().
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.
-
group
¶ EntryGroup for the row
-
inWorkspace
()¶ Obsolete. Use ProjectRow.in_workspace property instead.
-
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
()¶ Include this entry in the workspace and exclude all other entries.
-
index
¶ Internal Project index of the row. This is different from Project Table row number or from entry ID.
-
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 – 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. :type group_name: string
-
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
- name (str) – The name of the surface. Note that project rows require
all surfaces to be named uniquely. See
-
property
¶ Dictionary-like container of entry properties. Keys are strings of the form
type_family_name
as described instructure.PropertyName
documentation.
-
read_only
¶ Whether the entry is read only or not
-
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
-
structure
¶ This attribute is deprecated. Please use ProjectRow.getStructure() and ProjectRow.setStructure() instead.
-
surface
¶ A dictionary of all surfaces for this row. Keys are surface names and values are
project_surface.Surface
objects. :type:project_surface.SurfaceDict
-
surfaces
¶ Return an interator to the surface objects available for this entry
-
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.
process_measurements
(cmd, prj_handle)¶ Send workspace measurements to PyMOL
Parameters: - cmd (
PymolInstance
) – PyMOL API proxy - prj_handle (
schrodinger.project.Project
) – project handle
- cmd (
-
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 proxy - prj_handle (
schrodinger.project.Project
) – project handle
- cmd (
-
schrodinger.utils.pymol.
process_prj
(cmd, prj_handle, limit='all', with_surf=True, mimic=True)¶ Send maestro project to PyMOL. By default send everything, optional filters may apply.
Parameters: - cmd (
PymolInstance
) – PyMOL API proxy - prj_handle (
schrodinger.project.Project
) – project handle - limit (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
- cmd (
-
schrodinger.utils.pymol.
process_hypothesis
(cmd, row, mae)¶ Import Phase pharmacophores as CGOs into PyMOL.
Parameters: - cmd (
PymolInstance
) – PyMOL API proxy - row (
schrodinger.project.ProjectRow
) – project table row - mae (str) – reference mae filename
- cmd (
-
schrodinger.utils.pymol.
process_row
(cmd, row, limit_included=False, with_surf=True, mimic=True)¶ Send a row from the project table to PyMOL.
Parameters: - cmd (
PymolInstance
) – PyMOL API proxy - row (
schrodinger.project.ProjectRow
) – project table row - limit_included (bool) – limit surface export to workspace
- with_surf (bool) – send surfaces
- mimic (bool) – use PyMOL settings to match style as close as possible
- cmd (
-
schrodinger.utils.pymol.
process_surface
(cmd, row, e_surf)¶ Send a surface to PyMOL
Parameters: - cmd (
PymolInstance
) – PyMOL API proxy - row (
RowProxy
) – project table row - e_surf (
schrodinger.project.EntrySurface
) – surface
- cmd (
-
schrodinger.utils.pymol.
send_maestro_settings
(cmd)¶ Map Maestro settings to closest matching PyMOL settings.
Parameters: cmd ( PymolInstance
) – PyMOL API proxyReturn type: bool Returns: True on success and False if Maestro is not available