PyMOL v1.5.0 Release Notes

New Features

Performance Increases

PyMOL now renders directly from the video card (GPU). This along with other optimizations increases real-time rendering performance and quality. Low-end video cards we tested have shown 200%+ increase in speed. High-end video cards with more memory and processing cores have shown increases near 2000% for large systems. A real-world example of performance increases for a PyMOL session with 250,000 atoms:

  • Lines: 28 Hz → 226 Hz (707% increase!)
  • Cartoons: 7 Hz → 47 Hz (571% increase!)
  • Sticks: 2.1 Hz → 37 Hz (1661% increase!)
  • Surfaces: 6.0 Hz → 70 Hz (1,066% increase!)

Users are encouraged to always update their video drivers. This is especially important for old and low-end hardware.


Real-time rendering is now nearly the same level of quality as ray-traced rendering, but without shadows. Geometry has been fixed, improved, or made pixel-perfect for the following:

  • half-bonds and half-bond coloring
  • sticks and ball-and-stick
  • lines, mesh, non-bonded, alignments
  • non-bonded spheres
  • cartoon
    • nucleic acid cartoons

See examples of the rendering improvements.

Anaglyph Stereo

Background Gradient

Users can now add a background gradient to their scene instead of just a flat colored background. See bg_gradient for more details.

Surface Color Smoothing

Surface coloring at the intersection of two different types of atom has been improved. PyMOL now by default, smooths the colors between the two atoms. See surface color smoothing for detailed information including settings and disabling this feature.

Ambient Occlusion

Ambient occlusion is a rendering technique that improves sense of depth to objects. We have added ambient occlusion for real-time and ray-traced rendering in PyMOL. See real-time and ray-traced ambient occlusion for more details.

Nucleic Acids

Many more non-standard nucleic acids (PSU, 5MU, 7MG, MIA, H2U, 4SU, MA6, UR3, 5MC, 40C, 2MG, TM2, 2MG) render correctly as cartoons.

Better Integration with Mac OS X

MacPyMOL and PyMOLX11Hybrid have been updated with the following:

  • 3D Space Navigator, a 3D mouse, can now be used
  • Support for Mac OS X 10.7 (Lion)
  • MacPyMOL now comes with a Mac-friendly DMG installer instead of the non-standard tar file

UI Enhancements


We have added the following to the PyMOL GUI to simplify common workflows:

  • Molecular weight (A > Compute > Molecular Weight) calculation supporting explicit structure and implicit (PyMOL auto-adds hydrogens)
  • Automatic selection generation (A > Generate > Selection > ...), for
    • polar hydrogens
    • non-polar hydrogens
    • hydrogen bond donors
    • hydrogen bond acceptors
  • The Measurement Wizard now has a Polar Contacts entry for quickly detecting custom polar contacts between two molecules
  • Added Display > Roving Detail setting to the GUI
  • Added Show > Valence and Hide > Valence for object-level valence display control
  • Added spectrum coloring for molecular and solvent-accessible surface area under C > Spectrum > area ...
  • Added Setting > Rendering > Modernize to allow quick updates of old PyMOL Sessions
  • Updated Display > Quality > ... menu items to take advantage of new rendering techniques
  • Added Undo button to the Builder


  • Added Mouse > 3 Button Lights and Mouse > 2 Button Lights to enable easy, real-time editing of lights
  • Added surface picking (clicking on the surface of a protein will select the underlying atoms)


The CTRL function keys have been remapped for intuitive editing. From within PyMOL type help keyboard for more information. A quick summary is posted here:

  • If text is on the command line, PyMOL thinks control keys are used for editing the text on the command line:
    • CTRL-A – Moves the cursor to the start of the command line
    • CTRL-E – Moves the cursor to the end of the command line
    • CTRL-K – Deletes all text from the cursor to the end of the line
    • CTRL-V – Pastes into the command line (operating system dependent)
  • If text is not on the command line, PyMOL thinks you want to edit molecules and selections:
    • CTRL-A – Selects all atoms
    • CTRL-C – Copies the current selection
    • CTRL-I – Inverts the current selection
    • CTRL-V – Pastes the copied/cut atoms as a new object
    • CTRL-X – Cuts (removes) the actively selected atoms
    • CTRL-Y – Redo
    • CTRL-Z – Undo

File Formats

Support for reading compressed Maestro (.maegz) and PyMOL session files (.pze, pzw, .pse.gz, .psw.gz) has been added.


New Commands

get_viewport queries the size of the viewable area.

symmetry_copy copies the symmetry information of one object onto another. This is useful when trying to replicate a map outside the unit cell where either the map or the molecular object does not have appropriate symmetry information.

Improved Commands

Undo has been improved. It now supports addition/removal of atoms, bonds, and fragments; changes in valence, and atom type; molecular conformation; and works across multiple objects and states. See undo for more information.

Clean now updates the user when it finishes. It prints “Clean: Finished. Energy = XXX.YYY” upon completion. To get the MMFF energy value use the following syntax,

# clean and get the energy

e = cmd.clean("ligand")

print "Energy = %3.2f" % e

alignto now takes a method (align, super, cealign).

get_symmetry now supports molecular and map objects.


New Mouse Modes: Light Position Editing

  • Added Mouse > 3 Button Lights
  • Added Mouse > 2 Button Lights

These modes allow the user to drag the lights around the scene to position it exactly where desired. To use, simply enter 3 Button Lights or 2 Button Lights mode via the mouse menu or mouse mode matrix and then hold SHIFT and drag with the left mouse button. The Z-position can also be changed by holding SHIFT and dragging with the right mouse button.


By default, PyMOL’s first light, called “light”, is ambient (unidirectional) and so it’s position is constant–or irrelevant, really. To position the next light, called “light2” one types:

# ambient light + first directional light

set light_count, 2

# we're moving light2

set edit_light, 2

then move the light with the mouse.

To position light3 one would type:

# ambient light + 2 directional lights

set light_count, 3

# tell PyMOL we're editing light number 3

set edit_light, 3

then move the light with the mouse. Additional UI options may be added to make this easier still.

Additional UI options may be added to make this easier still.


  • Python access to OpenGL (users can now created arbitrary graphics objects using Python code)
    • run examples/devel/
  • Group names fixed
  • Fixed click-flash caused by middle mouse button when in background gradient mode
  • PyMOL now honors the “h_bond_from_proton” flag. If set, and hydrogens are present, PyMOL will draw hydrogen bonds from the hydrogen instead of the heavy atom it’s bound to.
  • Fixed/Improved CIF reading, especially from the GUI (File > Open > ...)
  • Fixed map loading when the PDB with the same name already exists
  • Volume button is now disabled by default if no volume object exists
  • Fixed crash when PyMOL couldn’t use shaders


The following settings (shown with their default values) have been added to PyMOL v1.5.0:

  • bg_gradient, 0
  • bg_rgb_top, 0. 0. 0.
  • bg_rgb_bottom, 0.2 0.2 0.5
  • ray_volume, off
  • ribbon_transparency, 0.0
  • state_counter_mode, -1
  • cgo_use_shader, 1
  • cgo_shader_ub_color, 0
  • cgo_shader_ub_normal, 0
  • cgo_lighting, 1
  • mesh_use_shader, 1
  • stick_debug, 0
  • cgo_debug, 0
  • stick_round_nub, 0
  • stick_good_geometry, 0
  • stick_as_cylinders, 1
  • mesh_as_cylinders, 0
  • line_as_cylinders, 0
  • ribbon_as_cylinders, 1
  • ribbon_use_shader, 1
  • excl_display_lists_shaders, 1
  • dash_use_shader, 1
  • dash_as_cylinders, 1
  • nonbonded_use_shader, 1
  • nonbonded_as_cylinders, 1
  • cylinders_shader_filter_faces, 1
  • nb_spheres_size, 0.25
  • nb_spheres_quality, 1
  • nb_spheres_use_shader, 1
  • render_as_cylinders, 1
  • alignment_as_cylinders, 1
  • cartoon_nucleic_acid_as_cylinders, 1
  • cgo_shader_ub_flags, 0
  • offscreen_rendering_for_antialiasing, 0
  • offscreen_rendering_multiplier, 4.0
  • cylinder_shader_ff_workaround, 0
  • surface_color_smoothing, 1
  • surface_color_smoothing_threshold, 0.05
  • dot_use_shader, 1
  • dot_as_spheres, 0
  • ambient_occlusion_mode, 1
  • ambient_occlusion_scale, 30.0
  • ambient_occlusion_smooth, 10
  • smooth_half_bonds, 1
  • anaglyph_mode, 4
  • edit_light

PyMOL v1.5.0.1 Hotfix Notes

There have been some issues in PyMOL v1.5.0 that made it necessary to provide a patch or “hotfix” as of 2/10/12. Here are the list of fixes/enhancements:

  • undo feature
    • added object-level suspend_undo
      • objects can now be set to suspend or be undone
      • added setting suspend_undo_atom_count (default 1000)
        • this is a threshold for newly created objects to automatically set the suspend_undo flag if that object has more atoms than the suspend_undo_atom_count setting
    • attaching fragments from the builder did not support suspend_undo.
    • the “bond” command did not undo correctly.
    • when an object’s name is changed, undo needs account for it, even though a name change cannot be undone.
    • undo did not work for deletes of objects that had empty states.
    • in a small number of cases, the number of bonds were not restored properly after a delete
  • updated old ctrl keys to work as ctrl-shift.
  • matrix_copy did not work (python stack trace was shown).
  • a “ExecutiveSetNamedEntries-Error message was sometimes displayed when reading in older session files.
  • some maps were not read in properly from session files
  • fixed reading in dcd files on windows

PyMOL v1.5.0.2 Hotfix Notes

There have been some small but important issues that have caused us to create a hotfix. These issues are:

  • stack trace when saving movie as MPEG when a volume exists
  • reading in an object from a pse file that has no Crystal and Symmetry info fails and it shouldn’t.

PyMOL v1.5.0.3 Hotfix Notes

  • 0.99 sessions load as version “9.900”
  • fixed session loading and map reading for incomplete symmetry information
  • added Settings > Edit All > ... filter for MacPyMOL
  • fixed rendering of unit cells
  • updated About MacPyMOL dialog
  • updated RigiMOL to use more than 4 GB RAM for morphs

PyMOL v1.5.0.4 Hotfix Notes

  • fixed problem when reading input from stdin with lines longer than 1024
  • CGOs did not save into session files correctly
  • saving PDBs sometimes put extra TER records
  • picking sometimes did not work or was off atoms
  • fixed warning messages/python stack trace when a movie is created
  • rendering lines/cylinders could brake in large scenes
  • Disable shaders if Intel video card found
  • added setting pick_surface that can disable picking on surfaces (on by default)
  • meshes can be saved/reloaded as CGOs when dependent map no longer exists

PyMOL v1.5.0.5 Hotfix Notes

  • Fixed MOE file reading bug
  • Added workaround for NVidia cards that don’t properly render cylinders
  • Fixes
    • Bonds now correctly respect the color command
    • PyMOL now reports and loads the correct number of atoms when loaded from an XYZ file with more than 999999 atoms
    • Single bonds drawn as full cylinders
    • Mesh saving is now fixed
    • CGO creation
    • Fixed memory leaks on OS X
    • Fixed bug in ray traced fog
    • Fixed atom level transparencies in surfaces
    • Cealign improvements:
      • chains of length < 2*window+1 now fixed
      • fixed double-increment bug that skipped paths
      • graceful exit on error
      • can now get an alignment object for cealign
      • fixed auto complete names
    • Fixed duplicate data bug with saving maps, which saves space
    • Updated HID device discovery (legacy versions could take up to 10s to start PyMOL; this new code is nearly instantaneous)

PyMOL v1.5.0.6 Hotfix Notes

  • Fixed:
    • picking did not always have the correct result
    • undo sometimes did not work when create() command was used
    • distance coloring did not always get invalidated properly
    • alignment dashes didn’t show on OSX
    • volume colors were not being set properly (the large volume cube was shown)
    • nonbonded_as_cylinders rendered one side flat
    • cylinder_shader_ff_workaround should be default
    • threading issue for commands piped in from stdin
    • web examples did not get loaded properly from web page
    • partial=2 in set_session() loads view from session
    • viewport should not change when suspend_updates=1
    • fixed chemical correctness in h_fill
    • right justified resn in PDB
    • alignment objects from “super” do not contain N atoms
    • fixed grouping issues where objects would sometimes get removed from groups
    • certain mouse actions in edit mode caused objects to be ungrouped
Copyright © Schrödinger, LLC. All Rights Reserved.