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

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

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

__init__(row, idx)
Parameters
  • row (RowProxy) – project table row

  • idx (int) – zero-based index in “m_surface” table

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, group_name: Optional[str])

Bases: schrodinger.project.project.ProjectRow

Proxy for project table row to attach additional data.

__init__(row, cmd, group_name: Optional[str])
Parameters
  • row (schrodinger.project.ProjectRow) – project table row

  • cmd (PymolInstance) – PyMOL API proxy

  • group_name – Name of the group in which all the objects will be added in PyMOL. If None, then row group name will be used.

doGroup(name)

Put name in PyMOL group, if row is in a Maestro group.

Parameters

name (str) – PyMOL object name

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
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 proxy

  • prj_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 proxy

  • prj_handle (schrodinger.project.Project) – project handle

schrodinger.utils.pymol.process_prj(cmd, prj_handle, limit='all', with_surf=True, mimic=True, include_trajectories=False, export_group_name: Optional[str] = None)

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

  • include_trajectories (bool) – include trajectories

  • export_group_name – Name of the group in which all the objects will be added in PyMOL. If None, then row group name will be used.

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 proxy

  • row (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 proxy

  • row (schrodinger.project.ProjectRow) – project table row

  • mae (str) – reference mae filename

schrodinger.utils.pymol.process_row(cmd, proj, row, export_group_name: Optional[str], 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 proxy

  • proj (schrodinger.project.Project) – project

  • 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

  • include_trajectories (bool) – include trajectories

  • export_group_name – Name of the group in which all the objects will be added in PyMOL. If None, then row group name will be used.

schrodinger.utils.pymol.process_trajectory(cmd, proj, row, mae_file_name, mimic=True)

Send trajectory to PyMOL

Parameters
  • cmd (PymolInstance) – PyMOL API proxy

  • proj (schrodinger.project.Project) – project

  • row (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 proxy

  • row (RowProxy) – project table row

  • e_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