<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pymol.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tstout</id>
	<title>PyMOL Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pymol.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tstout"/>
	<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php/Special:Contributions/Tstout"/>
	<updated>2026-05-17T22:37:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11851</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11851"/>
		<updated>2010-01-30T02:28:06Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* High-Level Enhancement Ideas (Mostly Python-oriented) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications (meaning, being able to import/export sessions from one to the other).&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* I often need to &amp;quot;replicate&amp;quot; previously PyMOL-made figures using newer coordinates/structures.  It would be a big help (to me), if PyMOL could produce an exported text file from the old PyMOL .pse file of graphical settings that I could then modify and apply as a pymol script to the new structure -- I'm thinking of something like an old-style MOLSCRIPT.INP file...&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
 &lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]],[[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11850</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11850"/>
		<updated>2010-01-30T02:25:18Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* Low-Level Enhancement Ideas (Mostly C-oriented) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications (meaning, being able to import/export sessions from one to the other).&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* I often need to &amp;quot;replicate&amp;quot; previously PyMOL-made figures using newer coordinates/structures.  It would be a big help (to me), if PyMOL could produce an exported text file from the old PyMOL .pse file of graphical settings that I could then modify and apply as a pymol script to the new structure -- I'm thinking of something like an old-style MOLSCRIPT.INP file...&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
 &lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]],[[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11849</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11849"/>
		<updated>2010-01-30T02:23:48Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* Integration Ideas (Linking Out to Useful Open-Source Tools) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications (meaning, being able to import/export sessions from one to the other).&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* I often need to &amp;quot;replicate&amp;quot; previously PyMOL-made figures using newer coordinates/structures.  It would be a big help (to me), if PyMOL could produce an exported text file from the old PyMOL .pse file of graphical settings that I could then modify and apply as a pymol script to the new structure -- I'm thinking of something like an old-style MOLSCRIPT.INP file...&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
 &lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]],[[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11848</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11848"/>
		<updated>2010-01-30T01:27:37Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* Low-Level Enhancement Ideas (Mostly C-oriented) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* I often need to &amp;quot;replicate&amp;quot; previously PyMOL-made figures using newer coordinates/structures.  It would be a big help (to me), if PyMOL could produce an exported text file from the old PyMOL .pse file of graphical settings that I could then modify and apply as a pymol script to the new structure -- I'm thinking of something like an old-style MOLSCRIPT.INP file...&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
 &lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]],[[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11847</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11847"/>
		<updated>2010-01-29T23:41:44Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* More Ideas (Please add your own!) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* I often need to &amp;quot;replicate&amp;quot; previously PyMOL-made figures using newer coordinates/structures.  It would be a big help (to me), if PyMOL could produce an exported text file from the old PyMOL .pse file of graphical settings that I could then modify and apply as a pymol script to the new structure -- I'm thinking of something like an old-style MOLSCRIPT.INP file...&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
 &lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]],[[User:Siderator|Carsten Schubert]], [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11846</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11846"/>
		<updated>2010-01-29T23:37:04Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* More Ideas (Please add your own!) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* I often need to &amp;quot;replicate&amp;quot; previously PyMOL-made figures using newer coordinates/structures.  It would be a big help (to me), if PyMOL could produce an exported text file from the old PyMOL .pse file of graphical settings that I could then modify and apply as a pymol script to the new structure -- I'm thinking of something like an old-style MOLSCRIPT.INP file...&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
 &lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]]),[[User:Siderator|Carsten Schubert]] / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11845</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11845"/>
		<updated>2010-01-29T23:30:31Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* High-Level Enhancement Ideas (Mostly Python-oriented) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]]),[[User:Siderator|Carsten Schubert]] / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11844</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11844"/>
		<updated>2010-01-29T23:28:36Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* Integration Ideas (Linking Out to Useful Open-Source Tools) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications.&lt;br /&gt;
:: yea ([[User:Tstout|tstout]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay ([[User:Tstout|tstout]])&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea (0) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]]),[[User:Siderator|Carsten Schubert]] / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11843</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11843"/>
		<updated>2010-01-29T23:27:03Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* Integration Ideas (Linking Out to Useful Open-Source Tools) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ideas for PyMOL Development ===&lt;br /&gt;
&lt;br /&gt;
This page was originally developed for the 2008 Google Summer of Code competition, but seeing as PyMOL wasn't selected, this page can instead serve as a resource for ongoing PyMOL development efforts.&lt;br /&gt;
&lt;br /&gt;
== Where to Start ==&lt;br /&gt;
&lt;br /&gt;
Always start with Python and only delve down into the C code when absolutely necessary.  Although PyMOL is mostly a C-based application, much of the that code is opaque, fragile, and unforgiving. Although C code refactoring is an important project goal, such work may not be ideal since once mistake could potentially to destabilize the entire platform. &lt;br /&gt;
&lt;br /&gt;
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when performance is critical, Python should be the interface between external C, C++, and Java code and PyMOL's internal C data structures.&lt;br /&gt;
&lt;br /&gt;
== Choosing a Topic ==&lt;br /&gt;
&lt;br /&gt;
The best open-source code is usually written by an end-users attempting to meet their own pressing needs.  So if you have already have a specific need which relates to PyMOL, then we strongly encourage you to follow up on that first!&lt;br /&gt;
&lt;br /&gt;
If you are looking for ideas,  then try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, imagine what new things might be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so forth.&lt;br /&gt;
&lt;br /&gt;
The ideas below are organized by category.  Right now, integration with other open-source projects seems like the approach most likely to yield significant benefit, so those ideas are first.&lt;br /&gt;
&lt;br /&gt;
== Integration Ideas (Linking Out to Useful Open-Source Tools) ==&lt;br /&gt;
&lt;br /&gt;
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through PyMOL Wizards, or via Tkinter plugins.&lt;br /&gt;
&lt;br /&gt;
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]] [[User:Jedgold|Jedgold]] [[User:Vcpmartin|Vcpmartin]] [[User:Siderator|Siderator]] [[User:Tstout|tstout]]) / nay (0)&lt;br /&gt;
:: Feel free to mention specific plugin enhancements you'd like! [[User:Mglerner|Michael Lerner]]&lt;br /&gt;
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. [http://www.rdkit.org RDKit home]&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* GIMP (image manipulation):  Streamline &amp;amp; document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL &amp;amp; Jmol projects to develop a shared molecular visualization data model compatible with both applications.&lt;br /&gt;
:: yea (0) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* MMTK (molecular mechanics -- Python/flexible):  Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]] [[User:Mglerner|Michael Lerner]]) / nay (0)&lt;br /&gt;
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* IPython integration (interactive shell): a robust alternative to the PyMOL command line?&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
&lt;br /&gt;
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?&lt;br /&gt;
&lt;br /&gt;
== High-Level Enhancement Ideas (Mostly Python-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Work on [[#More Ideas (Please add your own!)| MolViz]]&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop new plugins which automate routine tasks.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Improve the Python API documentation.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Flesh out the new &amp;quot;from pymol2 import PyMOL&amp;quot; instance-based PyMOL API.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop alternate Tkinter &amp;quot;skins&amp;quot; (for custom OEM-like applications).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Develop a PyQt widget which holds a PyMOL viewer instance.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Create a plugin-manager GUI in the style of Firefox, Rythmbox, Gedit, Eclipse. A GUI where it is easy to turn off/on plugins, configure them and see help-contents for them. Maybe also some way to paste a url to install a new Plugin.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add a plugin for a GUI window with the same functionality as the &amp;quot;Control Panel&amp;quot; window in SwissPDB Viewer.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.&lt;br /&gt;
:: yea (0) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) /nay(0)&lt;br /&gt;
&lt;br /&gt;
== Low-Level Enhancement Ideas (Mostly C-oriented) ==&lt;br /&gt;
&lt;br /&gt;
* Enable editing of displayed sequence alignments.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Aschreyer|Aschreyer]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&lt;br /&gt;
::: A search function in the sequence would also be nice. [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Add multi-line textual annotations&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Support additional annotation object including: arrow, lines, and blobs.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Add display of secondary structure into the sequence viewer.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]], [[User:Xevi|Xevi]], [[User:Johnm|Johnm]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: I would go a step further with fully customizable selection-based clipping planes (XYZ, color and transparency) ([[User:Gregori|Gregori]])&lt;br /&gt;
* Highlight H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&lt;br /&gt;
* Enumeration and display of low-energy conformers.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / nay (0)&lt;br /&gt;
::: This could be done by integrating RDKit, I think. [[User:Aschreyer|Aschreyer]]&lt;br /&gt;
* Automated structure grafting (poor-man's homology modeling).&lt;br /&gt;
:: yea (0) / nay ([[User:Jedgold|Jedgold]], [[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]])&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add buttons for '''Set ChainID''' and '''Renumber Residues From...''' to Edit menu or Actions (wrapper around Alter command)&lt;br /&gt;
:: yea ([[User:Sheehanj|Sheehanj]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Difficult C-level Code Refactoring Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Replace PyMOL's memory management &amp;amp; custom containers with a simple runtime object model.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* Enable generalized undo of changes made to the Model.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]&amp;quot;[[User:Vcpmartin|Vcpmartin]], [[User:Lucajovine|Luca Jovine]]&amp;quot;, [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas Involving Proprietary APIs ==&lt;br /&gt;
&lt;br /&gt;
Since these involve closed-source APIs and infrastructure, they aren't suitable for open-source development efforts.  However, such requests are noted here for the sake of complete coverage.&lt;br /&gt;
&lt;br /&gt;
* Create a Windows port with &amp;quot;native&amp;quot; look &amp;amp; feel. &amp;lt;- Could this be done in PyQT or PyGTK?. Then it would look &amp;quot;native&amp;quot;, but be cross-platform and not proprietary.&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Integrate directly via Mathematica via MathLink.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Further enhance JyMOL (Java-JNI/wrapped PyMOL)&lt;br /&gt;
:: yea ([[User:Inchoate|Tree]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&lt;br /&gt;
* Quicklook Plugin on the Mac&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
&lt;br /&gt;
== Ideas for Plugin Developers ==&lt;br /&gt;
&lt;br /&gt;
The range of things that PyMOL plugins can do has grown by leaps and bounds over the last several years. It may be time for some new infrastructure to facilitate plugin development.&lt;br /&gt;
&lt;br /&gt;
* Plugins that span multiple files. This means 1. the ability to have them 2. the ability for users to easily install them.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
* Config files that persist between sessions. This would be useful for things like remembering the locations of external programs, etc., without requiring the user to modify their .pymolrc.&lt;br /&gt;
:: yea (1) / nay (0) ([[User:Mglerner|Michael Lerner]])&lt;br /&gt;
&lt;br /&gt;
== More Ideas (Please add your own!) ==&lt;br /&gt;
* [http://molviz.cs.toronto.edu/molviz MolViz] is a project to incorporate head tracking input into [http://pymol.sourceforge.net/ PyMol]. This is accomplished through a [[ImmersiveViz]] script written in Python to control the molecule's position using the existing [http://www.pymolwiki.org/index.php/Category:Commands PyMol API]. Related projects would include:&lt;br /&gt;
** Improving the existing [[ImmersiveViz]] PyMol plugin for more precise control of the environment.&lt;br /&gt;
** Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.&lt;br /&gt;
** Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [[http://www.youtube.com/watch?v=ncShaY4VSac video]] for a better description).&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Provide a 2D chemical depiction of the current 3D view.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
::: RDKit?&lt;br /&gt;
* Spreadsheet view with additional information (e.g. IC50's).&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Create additional documentation, screen casts, &amp;amp; tutorials.&lt;br /&gt;
:: yea ([[User:Markvanraaij|Markvanraaij]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* &amp;lt;strike&amp;gt;Add extra &amp;quot;Single Word Selectors&amp;quot; like &amp;quot;nucleic&amp;quot;, &amp;quot;protein&amp;quot;, &amp;quot;water&amp;quot;, &amp;quot;ions&amp;quot;, &amp;quot;backbone&amp;quot; (for nucleic acids or proteins), &amp;quot;mainchain&amp;quot;, &amp;quot;sidechain&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* Add functionality that allows you to select atoms based on their location (i.e. select (x_coordinate &amp;lt; 10) and (z_coordinate &amp;gt; 0))&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* set pdb_mirror option to use PDB mirrors other than RCSB for fetching structures (PDBe, PDBj); the EBI mirror is much faster from Europe for example.&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* have the ability to link the TK console to the viewer so that users don't have to constantly alt+tab between what they want&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* have the ability to disable typing in the viewer and automatically type in the TK console (I like being able to cut/paste/home/end)&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* I see a lot of &amp;quot;can pymol do this&amp;quot; threads - any ideas of a good UI for a page of &amp;quot;things PyMOL can do?&amp;quot;&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* make an option where I can turn on a coordinate grid - perhaps an object that is a cuboid grid around any object in the view so I can still alter how it's rendered?&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* iPhone / Nexus One app(s)&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* single-color bonds between nonidentical or any spherical atoms colored specifically&lt;br /&gt;
:: yea (0) / nay (0)&lt;br /&gt;
* double bonds as two parallel cylinders&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;br /&gt;
* export scenes as [http://www.khronos.org/webgl/ WebGL] / Could make mobile apps, presentation plugins obsolete&lt;br /&gt;
:: yea ([[User:Aschreyer|Aschreyer]], [[User:Cowsandmilk|Cowsandmilk]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Electron density contour sliders&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: May be even map the contouring level onto the wheel [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Internal support for FFT, i.e. reading of map coefficients&lt;br /&gt;
:: yea ([[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Aschreyer|Aschreyer]], [[User:Johnm|Johnm]]),[[User:Siderator|Carsten Schubert]] / nay (0)&lt;br /&gt;
* Display of crystallographic symmetry and NCS axes, with possibility of showing symbols indicating what kind of axes they are&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;br /&gt;
::: Support for labeling cell axes and origin, etc... [[User:Siderator|Carsten Schubert]]&lt;br /&gt;
* Automatic symmetry expansion to show overall crystal packing; automatic generation of scenes showing crystal packing interface details&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]], [[User:Siderator|Carsten Schubert]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Warren&amp;diff=9122</id>
		<title>Warren</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Warren&amp;diff=9122"/>
		<updated>2009-11-10T20:14:13Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* User Comments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Warren DeLano =&lt;br /&gt;
Sadly, Waren DeLano, the author of PyMOL, passed away on Monday night, Nov. 2nd, 2009. He will be sorely missed.&lt;br /&gt;
&lt;br /&gt;
Here is the note posted to the CCP4 list by his mentor, Axel Brunger.&lt;br /&gt;
----&lt;br /&gt;
Dear CCP4 Community:&lt;br /&gt;
[[Image:Warren.jpg|right|frame|Warren DeLano]]&lt;br /&gt;
&lt;br /&gt;
I write today with very sad news about Dr. Warren Lyford DeLano.&lt;br /&gt;
&lt;br /&gt;
I was informed by his family today that Warren suddenly passed &lt;br /&gt;
away at home on Tuesday morning, November 3rd.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While at Yale, Warren made countless contributions to the computational tools &lt;br /&gt;
and methods developed in my laboratory (the X-PLOR and CNS programs), &lt;br /&gt;
including the direct rotation function, the first prediction of helical coiled coil &lt;br /&gt;
structures, the scripting and parsing tools that made CNS a universal computational&lt;br /&gt;
crystallography program. &lt;br /&gt;
&lt;br /&gt;
He then joined Dr. Jim Wells laboratory at USCF and Genentech where he pursued&lt;br /&gt;
a Ph.D. in biophysics, discovering some of the principles that govern&lt;br /&gt;
protein-protein interactions.&lt;br /&gt;
&lt;br /&gt;
Warren then made a fundamental contribution to biological sciences by creating the &lt;br /&gt;
Open Source molecular graphics program PyMOL that is widely used throughout&lt;br /&gt;
the world. Nearly all publications that display macromolecular structures use PyMOL.&lt;br /&gt;
&lt;br /&gt;
Warren was a strong advocate of freely available software and the Open Source&lt;br /&gt;
movement. &lt;br /&gt;
&lt;br /&gt;
Warren's family is planning to announce a memorial service, but arrangements have &lt;br /&gt;
not yet been made. I will send more information as I receive it. &lt;br /&gt;
&lt;br /&gt;
Please join me in extending our condolences to Warren's family. &lt;br /&gt;
&lt;br /&gt;
Sincerely yours,&lt;br /&gt;
Axel Brunger&lt;br /&gt;
&lt;br /&gt;
Axel T. Brunger&lt;br /&gt;
Investigator,  Howard Hughes Medical Institute&lt;br /&gt;
Professor of Molecular and Cellular Physiology&lt;br /&gt;
Stanford University&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Post a message of your memories of Warren on [http://warrendelano.blogspot.com/ this blog] that his family set up.&lt;br /&gt;
* [http://www.flickr.com/photos/chemlove519/4088244149/in/set-72157622633960867/ Pics of Warren]&lt;br /&gt;
* In lieu of flowers please make donations to [http://warrendelano.blogspot.com/2009/11/updates.html the Warren L. DeLano Memorial Fund].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Additional Photos =&lt;br /&gt;
[[Image:WarrenDeLanoMosaicized_1536x1152.png|none|thumb|Warren DeLano, rendered as a mosaic of PyMOL-crafted [[Covers|journal covers]] ]]&lt;br /&gt;
&lt;br /&gt;
= User Comments =&lt;br /&gt;
If anyone would like, please feel fee to add any comments/memories you have, here.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* I am very saddened to have lost a friend and mentor. Warren was a great influence on us all.&lt;br /&gt;
::[[User:Inchoate|Tree]] 19:45, 8 November 2009 (UTC)&lt;br /&gt;
----&lt;br /&gt;
* I have been in utter disbelief over the past week.  His love for science was clear and his mission to make PyMOL the best that it could be was unparalleled.  I wish I had the opportunity to meet him in person.&lt;br /&gt;
::[[User:slaw|slaw]] 11:38, 9 November 2009 (EST)&lt;br /&gt;
----&lt;br /&gt;
* We've lost one of the truly &amp;quot;good guys&amp;quot;... &lt;br /&gt;
--[[User:Tstout|tstout]] 20:14, 10 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MovieSchool&amp;diff=7016</id>
		<title>MovieSchool</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MovieSchool&amp;diff=7016"/>
		<updated>2009-06-28T23:17:40Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;p style=&amp;quot;font-size: 28px; text-decoration: underline;&amp;quot;&amp;gt;'''PyMOLWiki's Movie School'''&amp;lt;/p&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''In a hurry?  Need a movie ''' ''now'' '''?!  See [[#Movie_Making_for_the_Impatient|Movie Making for the Impatient]].  Otherwise, read on.'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here you will learn all the latest and greatest techniques for making PyMOL movies.  These make you look like a '''master of PyMOL''' when you can show them off in a presentation or even in MPEG/AVI format.&lt;br /&gt;
&lt;br /&gt;
* All scripts are commented&lt;br /&gt;
* All scrips can be directly copy/pasted into '''newer''' PyMOLs, which should then result is a movie being created (and possible automatically played, too).&lt;br /&gt;
* Please leave off-topic stuff or requests to this page's discussion page.&lt;br /&gt;
* As the rest of the wiki, this page is editable by all (registered) users.  If you have a tip or movie you'd like to add, please feel free to do so.&lt;br /&gt;
&lt;br /&gt;
== Movie Making ==&lt;br /&gt;
While PyMOL's capability to produce static images is quite powerful, there are some stories that are better told through movies, than static images alone.  This little page will provide the necessary ideas, links, code and examples for making movies in PyMOL.&lt;br /&gt;
&lt;br /&gt;
== Your First Movie ==&lt;br /&gt;
Movies can be very simple, for example, animating an NMR ensemble:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Your first movie.&lt;br /&gt;
fetch 1nmr&lt;br /&gt;
mplay&lt;br /&gt;
&lt;br /&gt;
# to stop the movie when you're ready&lt;br /&gt;
# type 'mstop'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What PyMOL did here was to [[fetch]] the file from the PDB and load it into an object with 20 states.  Somewhere between then and issuing [[mplay]] PyMOL created 20 frames for your object and assigned one state to each frame.  This created the animated effect as we scroll through the frames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
Imagine a complex movie for a moment, a movie that has camera motions, objects moving independently or in concert with other objects, changing colors and representations.  To handle camera motions PyMOL must know at all times where the camera is located and what it's pointed toward (as well as clipping planes).  For objects to move around or be rotated without regard to the camera (the objects themselves rotate/translate, not just the camera), PyMOL has to store the coordinates and matrices for these objects, too.  Changing colors and representations for each object must somehow also be stored.  So, as you can see this is a multidimensional problem: at each time point in your movie, PyMOL must remember positions and representations, as well as make it easy for you to transition between them (interpolation).&lt;br /&gt;
&lt;br /&gt;
Despite these complexities, PyMOL tries to enable movie making for even novice users.  Let's start by defining a few PyMOL concepts&amp;amp;mdash;states, frames and scenes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Movie Terminology ===&lt;br /&gt;
[[Image:Movies.png|right|thumb|frame|Schematic of how frames, scenes and states link together.]]&lt;br /&gt;
&lt;br /&gt;
'''object'''&lt;br /&gt;
::An object is any PyMOL-object loaded into PyMOL, like atoms, molecules, complexes, etc.  When you load an PDB from disk/net it is loaded into PyMOL as an object.&lt;br /&gt;
:: [[:Category:Objects|All pages regarding objects]]&lt;br /&gt;
&lt;br /&gt;
'''selection'''&lt;br /&gt;
:: A selection is a specifically chosen set of atoms, molecules, complexes etc. in PyMOL.  A selection is not an object, it's a subset of stuff from a (collection of) object(s).  Selections can be named and when named have are distinguished from objects by having parentheses around their names.  For example, ''foo'' would be an object and ''(foo)'' would be some selection.  When you pick an atom (and get the default '''(sele)''' selection) or issue the ever-popular [[Select]]ion command, you get a selection.&lt;br /&gt;
:: [[:Category:Selections|All pages regarding selections]]&lt;br /&gt;
&lt;br /&gt;
'''states'''&lt;br /&gt;
:: A state is a particular conformation (set of coordinates) for a given object.  For example an NMR ensemble could contain the same molecule, but in 20 different states.  PyMOL can make movies from states.  States '''do not store representations''' in PyMOL (eg. cartoons vs. sticks).&lt;br /&gt;
:: See also [[:Category:States|All pages regarding states]]&lt;br /&gt;
&lt;br /&gt;
'''scenes'''&lt;br /&gt;
:: A '''scene''' as I understand stores the orientation/position of the camera, all object activity information, all atom-wise visibility, color, representations, and the global frame index.&lt;br /&gt;
:: See [[:Category:Scenes]] and [[Scene]] for more information.  The [[Scene]] page has information on how to quickly add/remove and change scenes--''suggested reading!''&lt;br /&gt;
&lt;br /&gt;
'''interpolation'''&lt;br /&gt;
:: A scene is the staged representations of objects and the orientation of the camera.&lt;br /&gt;
:: See also [[:Category:Scenes|All pages regarding scenes]]&lt;br /&gt;
&lt;br /&gt;
'''frames'''&lt;br /&gt;
:: A frame can be thought of as a single frame in a movie reel.  A frame stores state information and scene information.&lt;br /&gt;
:: See also [[:Category:Frames|All pages regarding frames]]&lt;br /&gt;
&lt;br /&gt;
'''Movie Panel'''&lt;br /&gt;
:: The movie panel is a frame indicator strip at the bottom of the screen.  It shows a little icon for which frame you're currently on, and whether or not the camera has been set for that frame.&lt;br /&gt;
:: See [[movie_panel]] for more information.&lt;br /&gt;
&lt;br /&gt;
== What is a Movie? ==&lt;br /&gt;
Now the we have the appropriate terminology to talk about movies in PyMOL, we can discuss what a movie really is.  A movie in PyMOL is a series of frames stitched together in some way so as to create the desired animation.  Once a movie is made in PyMOL, we have a few options for exporting it to other formats like png arrays or MPEG moves.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Movie Making for the Impatient ==&lt;br /&gt;
If you don't have time to or care to make more complex movies and want a movie ''now'' then read this section.  It mostly involves the GUI for making movies, so get your mouse ready.&lt;br /&gt;
&lt;br /&gt;
=== Simple Camera Motions ===&lt;br /&gt;
==== Simple 360 Scene Rotation ====&lt;br /&gt;
To make a movie that simply rotates around your scene 360 degrees, in the menu click on:&lt;br /&gt;
:: '''Movie-&amp;gt;Program-&amp;gt;Camera-&amp;gt;X-Roll-&amp;gt;N Seconds'''&lt;br /&gt;
for an N-second movie rolling over the X-axis.  Chose &lt;br /&gt;
:: '''Movie-&amp;gt;Program-&amp;gt;Camera-&amp;gt;Y-Roll-&amp;gt;N Seconds'''&lt;br /&gt;
for the Y-axis roll.&lt;br /&gt;
&lt;br /&gt;
Done!  Press '''play'''.&lt;br /&gt;
&lt;br /&gt;
==== Simple 30, 60, 90, 120, 180, Scene Rocking ====&lt;br /&gt;
This will show up to a 30, 60, 90, 120 or 180 rocking 'wedge' of the scene.  If you don't want to rotate all the way around, use this.&lt;br /&gt;
:: '''Movie-&amp;gt;Program-&amp;gt;Camera-&amp;gt;X-Rock-&amp;gt;X-Degrees over N-Seconds'''&lt;br /&gt;
&lt;br /&gt;
Done!  Press '''play'''.&lt;br /&gt;
&lt;br /&gt;
==== Nutate ====&lt;br /&gt;
Nutating is like a wiggle-rock; try it and see.&lt;br /&gt;
:: '''Movie-&amp;gt;Program-&amp;gt;Camera-&amp;gt;X-Rock-&amp;gt;X-Degrees over N-Seconds'''&lt;br /&gt;
&lt;br /&gt;
Done!  Press '''play'''.&lt;br /&gt;
&lt;br /&gt;
==== Zooming Around an Object ====&lt;br /&gt;
This is also known as camera movement.  Let's make a simple program that just zooms in and out on a some atom.&lt;br /&gt;
:: '''Build-&amp;gt;Residue-&amp;gt;Tryptophan'''&lt;br /&gt;
:: '''Scene-&amp;gt;Store-&amp;gt;F1'''&lt;br /&gt;
:: ''Click any atom and zoom on it''&lt;br /&gt;
:: '''Scene-Store-&amp;gt;F2'''&lt;br /&gt;
:: '''Movie-&amp;gt;Program-&amp;gt;Scene Loop-&amp;gt;''' and if you want to nutate while at the scene choose '''Nutate''' otherwise choose '''Y-Rock'''.&lt;br /&gt;
&lt;br /&gt;
Done!  Press '''play'''.&lt;br /&gt;
&lt;br /&gt;
* ''Hint'': Make multiple scenes, making sure to store each one.  Then use the Scene Loop to automatically program a movie for you!&lt;br /&gt;
&lt;br /&gt;
==== Real-world Example ====&lt;br /&gt;
First load the tutorial PDB:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
load $TUT/1hpv.pdb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:: '''All-&amp;gt;Preset-Technical'''&lt;br /&gt;
:: '''Scene-&amp;gt;Store-&amp;gt;F1'''&lt;br /&gt;
:: Type ''zoom i. 200'' to zoom on the ligand&lt;br /&gt;
:: '''Scene-&amp;gt;Store-&amp;gt;F2'''&lt;br /&gt;
:: '''Movie-&amp;gt;Program-&amp;gt;Scene Loop-&amp;gt;Y-Rock-&amp;gt;4 Seconds Each'''&lt;br /&gt;
&lt;br /&gt;
Done!  Press '''play'''.&lt;br /&gt;
&lt;br /&gt;
== Movie Making Commands ==&lt;br /&gt;
This tutorial assumes you have some basic knowledge about how to use PyMOL (eg. mousing, choosing and setting your representations, etc).  If you're not yet at this level, please check out [[:Category:Tutorials|the Tutorial Category]] of pages (most notably the beginner tutorials).&lt;br /&gt;
&lt;br /&gt;
I think it's help to think of the movie as a set of frames, like in a movie reel, so let's start there.  (Each command below links to the command's PyMOL wiki page, so feel free to click through for more info.)&lt;br /&gt;
&lt;br /&gt;
=== [[frame]]===&lt;br /&gt;
This command tells PyMOL to set the current frame to whichever you desire.  To use it, just issue the command, &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;frame X&amp;lt;/source&amp;gt; where '''X''' is some integer number indicating the frame you want to go to.  If you issue a frame number greater than the number of frames, PyMOL sets the frame to the highest-numbered frame you have (similarly for negative numbers or numbers smaller than the minimum numbered frame).&lt;br /&gt;
&lt;br /&gt;
Let's try a quick example with [[frame]],&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# create an empty 90 frame movie&lt;br /&gt;
mset 1 x90&lt;br /&gt;
# turn on the movie panel (bottom of screen)&lt;br /&gt;
set movie_panel, on&lt;br /&gt;
# goto frame one&lt;br /&gt;
frame 1         &lt;br /&gt;
# try some intermediate frames; notice the blue indicator in the movie panel         &lt;br /&gt;
frame 10&lt;br /&gt;
frame 50&lt;br /&gt;
frame 90&lt;br /&gt;
# try going beyond the end and see what PyMOL does&lt;br /&gt;
frame -1&lt;br /&gt;
frame 100&lt;br /&gt;
# play through the empty movie&lt;br /&gt;
mplay&lt;br /&gt;
# stop the movie&lt;br /&gt;
mstop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[States|set state]] ===&lt;br /&gt;
Again, states are particular stored conformations of objects.  Here we use PyMOL to set and get the states, and see how PyMOL mapped them to our earlier movie example.&lt;br /&gt;
&lt;br /&gt;
This command has a similar idea of [[frame]], but works a little differently.  Instead of typing,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# invalid command&lt;br /&gt;
state 40&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
in PyMOL we [[set]] the [[States|state]]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# how to set a state in PyMOL&lt;br /&gt;
set state, stateNo, objectName&lt;br /&gt;
&lt;br /&gt;
# for example&lt;br /&gt;
# set state to 40&lt;br /&gt;
set state, 40&lt;br /&gt;
&lt;br /&gt;
# also, get state&lt;br /&gt;
get state&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== States &amp;amp;amp; Frames (optional reading) ====&lt;br /&gt;
As an example, look at the code from the &amp;quot;first movie&amp;quot;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
fetch 1nmr&lt;br /&gt;
mplay&lt;br /&gt;
# issue mstop, to stop the movie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can do a couple things now, let's try counting the number of states and frames PyMOL now knows about:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# how many frames does PyMOL know about?&lt;br /&gt;
count_frames&lt;br /&gt;
&lt;br /&gt;
# what about states?&lt;br /&gt;
count_states&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and now let's see how PyMOL mapped frames to states.  Using the above commands and a little Python, let's see how PyMOL mapped the frames to states:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
python&lt;br /&gt;
for x in range(1,cmd.count_frames()+1):&lt;br /&gt;
  cmd.frame(x)&lt;br /&gt;
  print &amp;quot;Frame =&amp;gt; %s; and State =&amp;gt; %s&amp;quot; % ( str(x), str(cmd.get('state')))&lt;br /&gt;
python end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
which should show a 1-1 mapping of states to frames.&lt;br /&gt;
&lt;br /&gt;
=== [[mset]] ===&lt;br /&gt;
[[mset]] is a very powerful command.  This command tells PyMOL how to assign states to frames.  So, now you see why it's necessary to clearly distinguish between and use the two.  Let's learn how to use [[mset]].&lt;br /&gt;
&lt;br /&gt;
The syntax for [[mset]] can be a little tricky at first. I would write the syntax as:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
mset stateSpec, frameSpec&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
which assigns the states in '''stateSpec''' to the frames in '''frameSpec'''., where '''stateSpec''' is any mset-valid state specification.  PyMOl supports to patterns for '''stateSpec'''.  You can do simply supply a number eg&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
mset 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or you can specify a range of states&amp;amp;mdash;like 1 through 55 as&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# setting states 1 through 55&lt;br /&gt;
# caution: notice the space: 1 -55, not 1-55 (this is a PyMOL parser caveat)&lt;br /&gt;
mset 1 -55&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Simple enough.  Now for '''frameSpec''' you can specify a single frame number like so or you can specify ''how many frames PyMOL should use to map to your specified states'' with the '''xNumber''' command.  This will make sense with an example&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Recall: mset stateSpec frameSpec&lt;br /&gt;
# so we are setting STATE 1 across a span of 90 frames&lt;br /&gt;
mset 1 x90&lt;br /&gt;
&lt;br /&gt;
# Recall: mset stateSpec frameSpec&lt;br /&gt;
# so we are setting states 1..120 to the next 120 frames&lt;br /&gt;
mset 1 -120 x120&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Actually the syntax is a little more complicated than this as PyMOL's mset command has the ability to remember in which frame the prior specification left the movie.  So, you can sort of chain the specifications.  Type ''help mset'' in PyMOL for more info or see [[mset]].&lt;br /&gt;
&lt;br /&gt;
=== [[mview]] ===&lt;br /&gt;
The [[mview]] command can be intimidating, but all we need to know about it at present is that it can store the (1) camera position or (2) a given object position.  The idea is to essentially make 'way points' in your movie and have PyMOL interpolate the in-between positions/coordinates, etc.  For example, if I wanted to make a 100-frame movie of a zoom into an object, I could store and manually set 100 camera positions, or I could do the starting position and the final position and ask PyMOL to just interpolate that over 100 frames.  The latter idea is obviously much simpler.  So simple in fact, let's make a super-quick movie that does exactly what I just mentioned&amp;amp;mdash;100 frames of a slow zoom into some object.  Start with a fresh PyMOL session ([[reinitialize]]) and then copy/paste the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot; line=1&amp;gt;&lt;br /&gt;
# let's initialize the movie to 100 frames, all of state 1&lt;br /&gt;
# it's ONLY state 1, because we're only moving the camera around, not&lt;br /&gt;
# changing structure coordinates of the leucine:&lt;br /&gt;
mset 1 x100&lt;br /&gt;
&lt;br /&gt;
# show a leucine&lt;br /&gt;
frag leu&lt;br /&gt;
&lt;br /&gt;
# position the residue&lt;br /&gt;
orient&lt;br /&gt;
&lt;br /&gt;
# let's store the current camera position&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# now set our way point to be frame 100&lt;br /&gt;
frame 100&lt;br /&gt;
&lt;br /&gt;
# now let's zoom into some atom on the fragment&lt;br /&gt;
zoom ID 10&lt;br /&gt;
&lt;br /&gt;
# now save this view at frame 100&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# last thing is to tell PyMOL to interpolate the 100 frame zoom&lt;br /&gt;
# so we don't have to do those 100 snapshots:&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
&lt;br /&gt;
# voila, you have a movie.  To watch it go back to frame 1 and play it&lt;br /&gt;
frame 1&lt;br /&gt;
mplay&lt;br /&gt;
&lt;br /&gt;
# mstop when you're ready&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'But, hold on!' you might say.  Why is it so herky-jerky?  We have smooth zooming but then a snap and back to frame one!  Well, we never gave PyMOL any number of frames to interpolate the change from frame 100 back to frame 1 (since it wraps).  If we wanted an a '''zoom in''' that was equally as fast as the '''zoom out''' we would simply '''replace line #16''' with &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# now set our way point to be frame 100&lt;br /&gt;
frame 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
but, if we wanted a slow, zoom in and a ''fast'' zoom out we could do&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# now set our way point to be frame 100&lt;br /&gt;
frame 80&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
instead which would only give PyMOL 20 frames with which to zoom us out.  Try it!&lt;br /&gt;
&lt;br /&gt;
==== Very Basic Mview Syntax ====&lt;br /&gt;
''This is a simple overview, see [[mview]] for complete details.''&lt;br /&gt;
&lt;br /&gt;
Using [[mview]] as you can see from above is pretty simple.  The very basic syntax is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# store the camera OR some object given by objName (if it's supplied)&lt;br /&gt;
mview store[, object=objName]&lt;br /&gt;
&lt;br /&gt;
# reinterpolate (link together the positions) for the saved camera or object&lt;br /&gt;
mview reinterpolate[, object=objName]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
If you leave off the '''object=objName''' then you're storing the '''camera information only'''&amp;amp;mdash;and so none of your objects will be moving anywhere&amp;amp;mdash;just the camera.  If you include an object name, then it stores that object's position information in the current frame.  The '''mview store''' tells PyMOL to store the camera or objects coordinates, while the '''mview reinterpolate''' command tells PyMOL to link together the saved positions for the camera or the selected object in a smooth, cool way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Movie Making &amp;amp;amp; the PyMOL GUI ==&lt;br /&gt;
These screenshots are all current as of PyMOL 1.2b8.&lt;br /&gt;
&lt;br /&gt;
=== Basic TK GUI ===&lt;br /&gt;
[[Image:tkgui1.png|center|frame|The basic TK GUI.  Menu options are File, Edit, Build, etc.]]&lt;br /&gt;
&lt;br /&gt;
==== Movie Menu ====&lt;br /&gt;
This image shows the movie menu in PyMOL.&lt;br /&gt;
[[Image:tkgui2.png|center|frame|The movie menu in PyMOL]]&lt;br /&gt;
* '''Append''' just adds X seconds to the end of your movie.  This is the equivalent of '''[[madd]] 1 x(FPS*time)'''.  So, you can very easily add anywhere from 1/4s to 60 seconds to your video.  You can use this multiple times.&lt;br /&gt;
[[Image:tkgui3.png|center|frame|The Movie-&amp;gt;Append submenu]].&lt;br /&gt;
&lt;br /&gt;
* '''Frame Rate''' submenu that controls the frame rate of your movie in frames per second.  It also controls whether or not the frame openGL screen frame rate is shown.&lt;br /&gt;
[[Image:tkgui4.png|center|frame|&amp;quot;Frame Rate&amp;quot; submenu]]&lt;br /&gt;
&lt;br /&gt;
==== Scene Menu ====&lt;br /&gt;
For storing our scenes, we can issue the ''[[scene]] store'' command or '''[[mview]] store scene=sceneName''' command.  You can also use the mouse and store/recall/clear scenes.&lt;br /&gt;
[[Image:tkgui5.png|center|frame|Scene Menu]]&lt;br /&gt;
&lt;br /&gt;
===== Scene's Recall Submenu =====&lt;br /&gt;
This menu shows the first 12 scenes stored by F-key that you can recall (if they were stored).  Please take note of the '''[[Scene_buttons|Buttons]]''' menu.  This make a small menu of scenes in the lower left hand corner of your openGL screen.  Very handy for roving through, moving around and switching to scenes.&lt;br /&gt;
[[Image:tkgui6.png|frame|center|Scene-&amp;gt;Recall submenu]]&lt;br /&gt;
&lt;br /&gt;
==== Mouse Menu ====&lt;br /&gt;
There is a new mouse mode called [[Three_Button_Motions]].  So we now have View-&amp;gt;Edit-Motions as mouse modes.  See [[Config_Mouse]].  &lt;br /&gt;
[[Image:tkgui7.png|frame|center|Mouse Menu]]&lt;br /&gt;
&lt;br /&gt;
=== openGL GUI ===&lt;br /&gt;
&lt;br /&gt;
=== Mouse Modes ===&lt;br /&gt;
If you've chosen '''Mouse-&amp;gt;3 Button All''' Modes from the Tk GUI you can now access the new mouse modes by clicking on the mouse info panel in the lower righ of the openGL window.  Click until the modes cycle through Edit-&amp;gt;View-&amp;gt;Motions-&amp;gt;Edit-&amp;gt;...&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200px&amp;quot; heights=&amp;quot;300px&amp;quot;&amp;gt;&lt;br /&gt;
Image:glgui1.png|Editing mode pay careful attention to the button on top.&lt;br /&gt;
Image:glgui2.png|Viewing mode pay careful attention to the button on top.&lt;br /&gt;
Image:glgui3.png|Motions mode pay careful attention to the button on top.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Motions Mode ====&lt;br /&gt;
In motions mode, if you click on '''all-&amp;gt;M''' you get options for storing, clearing, smoothing, interpolating, etc ''the camera'' motions and positions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400px&amp;quot; heights=&amp;quot;300px&amp;quot; perrow=2&amp;gt;&lt;br /&gt;
Image:glgui4.png|All-&amp;gt;Motions shows a menu for Camera Motion/Position options&lt;br /&gt;
Image:glgui5.png|All-&amp;gt;Motions-&amp;gt;Store with Scene allows you to assign the chosen scene with the current frame.&lt;br /&gt;
Image:glgui6.png|All-&amp;gt;Motions-&amp;gt;Store with State allows you to assign a chosen state to this scene.&lt;br /&gt;
Image:glgui7.png|All-&amp;gt;Motions-&amp;gt;Smooth helps with smoothing interpolation between scenes&lt;br /&gt;
Image:glgui8.png|''ALA''-&amp;gt;Motions menu shows our options, similar to the camera, but this time for the ''ALA'' fragment.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simple Movie Examples ==&lt;br /&gt;
We now the ability to make some pretty simple, but cool movies.  So, let's try a few.&lt;br /&gt;
&lt;br /&gt;
=== Multiple Zooming ===&lt;br /&gt;
Let's try making a movie where we zoom into each ligand that's not water.  In order to make this movie, I had to find a protein with suitable ligands, so you can do the same for your own protein.  Just replace the hard-coded residue numbers.&lt;br /&gt;
&lt;br /&gt;
'''Goal:''' Make a movie that zoom into the three ligands, stays on that ligand for 2 seconds, then moves to the next.  I also want smooth zoom out at the end.  Don't let the length of this movie script throw you off, you've seen all of the movie commands and the initial commands are just loading the and making it look good.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# setup PyMOL for the movie&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
&lt;br /&gt;
# load the PDB, make selections for the ligands and&lt;br /&gt;
# make the protein look snazzy.&lt;br /&gt;
#load /spc/pdb/2jep.pdb&lt;br /&gt;
fetch 2jep, async=0&lt;br /&gt;
remove resn HOH&lt;br /&gt;
orient&lt;br /&gt;
select l1, c. A and i. 1397&lt;br /&gt;
select l2, c. A and i. 1396&lt;br /&gt;
select l3, c. B and i. 1396&lt;br /&gt;
as cartoon&lt;br /&gt;
color grey&lt;br /&gt;
show sticks, het&lt;br /&gt;
color magnesium, het&lt;br /&gt;
&lt;br /&gt;
# At 30 FPS this is then a 16 second movie.&lt;br /&gt;
# We look at the structure for 2 seconds, zoom in to each ligand&lt;br /&gt;
# and look at it for another 2 seconds, then, zoom out and look again&lt;br /&gt;
# at everything for another 2 seconds.&lt;br /&gt;
&lt;br /&gt;
# initialize the 480 frame movie&lt;br /&gt;
mset 1 x480&lt;br /&gt;
&lt;br /&gt;
# zoom all ('scene #1')&lt;br /&gt;
frame 1&lt;br /&gt;
mview store&lt;br /&gt;
# stay here for 2 seconds&lt;br /&gt;
frame 60&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# zoom on ligand 1  ('scene #2')&lt;br /&gt;
frame 120&lt;br /&gt;
zoom l1&lt;br /&gt;
mview store&lt;br /&gt;
# stay here for 2 seconds&lt;br /&gt;
frame 180&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# zoom on ligand 2  ('scene #3')&lt;br /&gt;
frame 240&lt;br /&gt;
zoom l2&lt;br /&gt;
mview store&lt;br /&gt;
# stay for 2 seconds&lt;br /&gt;
frame 300&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# zoom to ligand 3  ('scene #4')&lt;br /&gt;
frame 360&lt;br /&gt;
zoom l3&lt;br /&gt;
mview store&lt;br /&gt;
# stay for 2 seconds&lt;br /&gt;
frame 420&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# zoom out  ('back to scene #1')&lt;br /&gt;
frame 480&lt;br /&gt;
zoom&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# interpolate the frames&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
&lt;br /&gt;
# play the awesome movie!&lt;br /&gt;
mplay&lt;br /&gt;
&lt;br /&gt;
# stop when you want&lt;br /&gt;
# mstop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Animating an Alignment ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# setup PyMOL for the movie&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
&lt;br /&gt;
# load the PDBs&lt;br /&gt;
fetch 1cll 1ggz, async=0&lt;br /&gt;
&lt;br /&gt;
# orient the scene&lt;br /&gt;
as cartoon&lt;br /&gt;
orient&lt;br /&gt;
&lt;br /&gt;
# make 100-frame movie&lt;br /&gt;
mset 1 x100&lt;br /&gt;
# goto frame 1&lt;br /&gt;
frame 1&lt;br /&gt;
&lt;br /&gt;
# store the camera position and object&lt;br /&gt;
# positions in frame 1&lt;br /&gt;
mview store&lt;br /&gt;
mview store, object=1cll&lt;br /&gt;
mview store, object=1ggz&lt;br /&gt;
&lt;br /&gt;
# goto frame 90&lt;br /&gt;
frame 90&lt;br /&gt;
# align the two proteins&lt;br /&gt;
super 1cll, 1ggz&lt;br /&gt;
# we rezoom to center the camera on the &lt;br /&gt;
# two aligned proteins&lt;br /&gt;
zoom&lt;br /&gt;
# store the camera positions&lt;br /&gt;
mview store&lt;br /&gt;
# store the new object position(s)&lt;br /&gt;
mview store, object=1cll&lt;br /&gt;
mview store, object=1ggz&lt;br /&gt;
&lt;br /&gt;
# have PyMOL stitch together the scenes.&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
mview reinterpolate, object=1cll&lt;br /&gt;
mview reinterpolate, object=1ggz&lt;br /&gt;
&lt;br /&gt;
# rewind&lt;br /&gt;
frame 1&lt;br /&gt;
# get some popcorn!  :-)&lt;br /&gt;
mplay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BB Inspector ===&lt;br /&gt;
This movie will walk down the alpha carbons inspecting each one for 1/3 of a second.  :-)  What would be cool would be to calculate the difference vector from i. n+1 to i. n and then walk that path.  Anyhow, here you go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# usual setup&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
&lt;br /&gt;
# fetch 1CLL to work on; this will only work on 1cll&lt;br /&gt;
# or any other protein with 144 AAs starting at resi 4.&lt;br /&gt;
fetch 1cll, async=0&lt;br /&gt;
as lines, n. C+O+N+CA&lt;br /&gt;
color marine&lt;br /&gt;
zoom i. 4+5&lt;br /&gt;
&lt;br /&gt;
# 10 frames per AA&lt;br /&gt;
mset 1 x1440&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# this code maps the zooming of&lt;br /&gt;
# one AA and it's neighbor to 10 frames&lt;br /&gt;
python&lt;br /&gt;
for x in range(0,144):&lt;br /&gt;
  cmd.zoom( &amp;quot;n. CA and i. &amp;quot; + str(x) + &amp;quot;+&amp;quot; + str(x+1))&lt;br /&gt;
  cmd.frame((10*x)+1)&lt;br /&gt;
  cmd.mview(&amp;quot;store&amp;quot;)&lt;br /&gt;
python end&lt;br /&gt;
&lt;br /&gt;
# goto the end and interpolate all the frames&lt;br /&gt;
frame 288&lt;br /&gt;
mview store&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
&lt;br /&gt;
# I know, it's not smooth &amp;amp; cool like the other ones&lt;br /&gt;
mplay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Putting It All Together ==&lt;br /&gt;
Now that we understand the basic PyMOL commands for movie making, we build a few ideas--which have already been hinted at--that lead to the final goal: allowing you to generate PyMOL movies to tell the stories you want to tell.  We start simple and build up the complexity.  Here's an outline of the ideas:&lt;br /&gt;
* '''camera motions'''&amp;amp;mdash;just moving the camera around your scene&lt;br /&gt;
* '''object motions'''&amp;amp;mdash;keeping the camera still, but moving the objects around the scene&lt;br /&gt;
* '''camera &amp;amp;amp; object motions '''&amp;amp;mdash;moving both the camera and objects around&lt;br /&gt;
* '''representations'''&amp;amp;mdash;changing representations in a movie (eg. sticks to cartoons to surface; hiding/showing, etc.)&lt;br /&gt;
* '''motions &amp;amp;amp; representations '''&amp;amp;mdash;adding all the motions and representations together&lt;br /&gt;
* '''extras'''&amp;amp;mdash;pseudoatom labels; scene messages, etc.&lt;br /&gt;
* '''final example movies'''&amp;amp;mdash;some examples combining the above knowledge&lt;br /&gt;
&lt;br /&gt;
If you've read through most the above article on movie making, then these sections should be more of a review.  There are some tricks in here that might be worth reading, however.&lt;br /&gt;
&lt;br /&gt;
Many of the movie scripts below assume that you have readied PyMOL for movie generation.  To do that use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
set scene_buttons, 1&lt;br /&gt;
set cache_frames, 1&lt;br /&gt;
config_mouse three_button_motions, 1&lt;br /&gt;
&lt;br /&gt;
# initialize a 100 frame movie&lt;br /&gt;
mset 1 x100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Camera Motions===&lt;br /&gt;
One of our first movies above was a very simple zoom on an atom in an amino acid.  The first 'scene' was the entire amino acid and the 2nd 'scene' was the zoomed in atom.  We just connected the two scenes and asked PyMOL to make the transition between the two smooth.  This is the idea of camera motions in PyMOL.  (You may not know that when you click on a protein and rotate it or drag it in PyMOL you're actually moving the camera, not the protein.)&lt;br /&gt;
&lt;br /&gt;
Assuming you had readied PyMOL to make your movie to get a camera motion you do the following:&lt;br /&gt;
* '''save the camera's first position information''': Once you have the protein/object aligned and shown in the representation of your choice, set the '''camera''' position information &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# goto the first frame&lt;br /&gt;
frame 1&lt;br /&gt;
# store the CAMERA positions ONLY&lt;br /&gt;
mview store&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* '''save the cameras second position information''': Now using the mouse (or scripted commands) move the camera to its new position--say zooming in on an important ligand or catalytic residue.  Once that's done, tell PyMOL to store the new camera position in this frame:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# goto the first frame&lt;br /&gt;
frame 88&lt;br /&gt;
# store the CAMERA positions ONLY&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# now link the two stored camera positions together:&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
&lt;br /&gt;
# play your movie&lt;br /&gt;
mplay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hints:&lt;br /&gt;
* '''mview reinterpolate, power=1&amp;quot; will turn off the smoothed starting and stopping of camera motions between the scenes.  The smoothing gives a nicer feel to transitions.  Try both, see which you prefer.&lt;br /&gt;
* check out mview's other options--like 'wrap'&lt;br /&gt;
* using the three_button_motions option, you can pretty much make the entire movie w/your mouse: All-&amp;gt;M-&amp;gt;Store is the same as, ''mview store'', and All-&amp;gt;M-&amp;gt;Reinterpolate is the same as ''mview reinterpolate''.&lt;br /&gt;
* '''[[mview]] reset''' unstores the camera position information for this frame.&lt;br /&gt;
&lt;br /&gt;
==== Camera Motions Movie Example ====&lt;br /&gt;
This idea should be pretty sound at this point, but examples rock, so here's another.  The pattern is:&lt;br /&gt;
* frame XYZ&lt;br /&gt;
* script the view&lt;br /&gt;
* mview store&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# setup PyMOL for movies&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
set scene_buttons, 1&lt;br /&gt;
set cache_frames, 1&lt;br /&gt;
config_mouse three_button_motions, 1&lt;br /&gt;
&lt;br /&gt;
fetch 1te1, async=0&lt;br /&gt;
extract AA, c. A&lt;br /&gt;
extract BB, c. B&lt;br /&gt;
color marine, AA&lt;br /&gt;
color grey, BB&lt;br /&gt;
as surface, BB&lt;br /&gt;
as cartoon, AA&lt;br /&gt;
&lt;br /&gt;
mset 1 x620&lt;br /&gt;
&lt;br /&gt;
orient&lt;br /&gt;
&lt;br /&gt;
wizard message, &amp;quot;Can you see the blue protein inhibiting the gray protein?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
frame 1&lt;br /&gt;
mview store&lt;br /&gt;
frame 30&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
### cut below here and paste into script ###&lt;br /&gt;
set_view (\&lt;br /&gt;
     0.307660401,    0.011366921,    0.951428533,\&lt;br /&gt;
     0.930296898,   -0.213488042,   -0.298277378,\&lt;br /&gt;
     0.199727684,    0.976880252,   -0.076255992,\&lt;br /&gt;
     0.000000000,    0.000000000, -196.781448364,\&lt;br /&gt;
    27.129878998,   68.309677124,   51.827075958,\&lt;br /&gt;
   155.143981934,  238.418914795,  -20.000000000 )&lt;br /&gt;
### cut above here and paste into script ###&lt;br /&gt;
&lt;br /&gt;
# slowly show the inhibition&lt;br /&gt;
frame 120&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# wait 3 seconds&lt;br /&gt;
frame 180&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# define the inhib as the binding loop&lt;br /&gt;
select inhib, AA and i. 148-155&lt;br /&gt;
select (none)&lt;br /&gt;
&lt;br /&gt;
# slowly zoom in&lt;br /&gt;
frame 300&lt;br /&gt;
zoom inhib&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# stop a second&lt;br /&gt;
frame 330&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# look around the binding pocket&lt;br /&gt;
frame 390&lt;br /&gt;
turn y, 150&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# wrap back more quickly...&lt;br /&gt;
frame 420&lt;br /&gt;
turn y, -150&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
# one more gratuitous view&lt;br /&gt;
frame 500&lt;br /&gt;
### cut below here and paste into script ###&lt;br /&gt;
set_view (\&lt;br /&gt;
     0.943371952,    0.309539229,   -0.119302809,\&lt;br /&gt;
    -0.044248745,   -0.239008784,   -0.970008850,\&lt;br /&gt;
    -0.328769624,    0.920357347,   -0.211777285,\&lt;br /&gt;
     0.000000000,    0.000000000,  -30.773454666,\&lt;br /&gt;
    35.418403625,   72.805625916,   52.437019348,\&lt;br /&gt;
    20.233829498,   41.313076019,  -20.000000000 )&lt;br /&gt;
### cut above here and paste into script ###&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
frame 560&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
mplay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Object Motions===&lt;br /&gt;
&lt;br /&gt;
Now that we're experts at moving the PyMOL camera around, let's start moving objects around while keeping the camera steady.  To do this '''you must have matrix_mode set to 1''', otherwise PyMOL won't save your object's repositioning.&lt;br /&gt;
&lt;br /&gt;
Let's use the same proteins as from the above inhibitor example.  This time, let's try to get a simple movie that shows one of the proteins and then have the other one fly in to do the inhibiting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# setup PyMOL for movies&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
set scene_buttons, 1&lt;br /&gt;
set cache_frames, 1&lt;br /&gt;
config_mouse three_button_motions, 1&lt;br /&gt;
&lt;br /&gt;
# download the complex and setup it up&lt;br /&gt;
fetch 1te1, async=0&lt;br /&gt;
extract AA, c. A&lt;br /&gt;
extract BB, c. B&lt;br /&gt;
color marine, AA&lt;br /&gt;
color grey, BB&lt;br /&gt;
as surface, BB&lt;br /&gt;
as cartoon, AA&lt;br /&gt;
&lt;br /&gt;
# intialize the movie &lt;br /&gt;
mset 1 x410&lt;br /&gt;
&lt;br /&gt;
# orient the scene&lt;br /&gt;
set_view (\&lt;br /&gt;
     0.423117876,    0.061672822,    0.903973043,\&lt;br /&gt;
     0.789699256,   -0.514252067,   -0.334546506,\&lt;br /&gt;
     0.444237947,    0.855418444,   -0.266292989,\&lt;br /&gt;
     0.000107866,   -0.000027858, -196.784057617,\&lt;br /&gt;
    28.171787262,   70.919288635,   52.095287323,\&lt;br /&gt;
   155.143981934,  238.418914795,  -20.000000000 )&lt;br /&gt;
&lt;br /&gt;
# move the inhibitor off the screeen&lt;br /&gt;
translate [0,0,100], object=AA&lt;br /&gt;
&lt;br /&gt;
# first movie scene&lt;br /&gt;
frame 1&lt;br /&gt;
wizard message, &amp;quot;Let's watch the binder float it, while the camera doesn't move.&amp;quot;&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
&lt;br /&gt;
# 2 second pause for the user to catch up&lt;br /&gt;
frame 60&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
&lt;br /&gt;
frame 300&lt;br /&gt;
# slide the inhibitor in from over the camera.  :-)&lt;br /&gt;
translate [0,0,-100], object=AA&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview interpolate, object=AA&lt;br /&gt;
&lt;br /&gt;
# store &amp;amp; wait 2 seconds...&lt;br /&gt;
frame 360&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
mview reinterpolate, object=AA&lt;br /&gt;
mview reinterpolate, object=BB&lt;br /&gt;
&lt;br /&gt;
# 'explode' apart&lt;br /&gt;
frame 380&lt;br /&gt;
translate [-70, 70, 70], object=AA&lt;br /&gt;
translate [70, -70, -70], object=BB&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
mview reinterpolate, object=AA&lt;br /&gt;
mview reinterpolate, object=BB&lt;br /&gt;
&lt;br /&gt;
mplay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hints:&lt;br /&gt;
* Use the mouse to get the 'right orientation &amp;amp;amp; zoom'.  Then use [[get_view]] to get the view matrix.  Finally, store that camera-position view matrix in your script.  Works every time.&lt;br /&gt;
* For object motions, the command '''translate [-70,70,70], object=AA''' would be the same as using the mouse and moving the object AA -70 units on the X-axis, +70 units on the Y and 70 on the Z.  If you don't use the '''object=''' you will not get the desired effect.&lt;br /&gt;
* For the above 'explosion' you can get quick motions by interpolating a large change over just a few frames.&lt;br /&gt;
&lt;br /&gt;
===Camera &amp;amp;amp; Object Motions===&lt;br /&gt;
Now let's combine the above two sections into one movie that has both object and camera motions.  This should be cool...&lt;br /&gt;
&lt;br /&gt;
''' FIXME '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# setup PyMOL for movies&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
set scene_buttons, 1&lt;br /&gt;
set cache_frames, 1&lt;br /&gt;
config_mouse three_button_motions, 1&lt;br /&gt;
 &lt;br /&gt;
# download the complex and set it up&lt;br /&gt;
fetch 1te1, async=0&lt;br /&gt;
extract AA, c. A&lt;br /&gt;
extract BB, c. B&lt;br /&gt;
color marine, AA&lt;br /&gt;
color grey, BB&lt;br /&gt;
as surface, BB&lt;br /&gt;
as cartoon, AA&lt;br /&gt;
&lt;br /&gt;
mset 1 x120&lt;br /&gt;
# overview of the scene&lt;br /&gt;
frame 1&lt;br /&gt;
mview store&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
&lt;br /&gt;
# zoom into the binding pocket- setting the view means&lt;br /&gt;
# that this will be a camera motion from frames 1 to 120.&lt;br /&gt;
frame 120&lt;br /&gt;
set_view (\&lt;br /&gt;
     0.993863702,    0.110482253,   -0.005255031,\&lt;br /&gt;
     0.054543663,   -0.530888498,   -0.845684826,\&lt;br /&gt;
    -0.096224494,    0.840209842,   -0.533656776,\&lt;br /&gt;
     0.000000000,    0.000000000,  -50.366786957,\&lt;br /&gt;
    34.781314850,   71.208221436,   52.535022736,\&lt;br /&gt;
    39.709556580,   61.024017334,  -20.000000000 )&lt;br /&gt;
mview store&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
&lt;br /&gt;
# wiggle the inhibitor, like it's trying to escape&lt;br /&gt;
python&lt;br /&gt;
for x in range(20):&lt;br /&gt;
  cmd.madd(&amp;quot;1 x3&amp;quot;); cmd.frame(1000);&lt;br /&gt;
  cmd.rotate(&amp;quot;x&amp;quot;, 2.0, object=&amp;quot;AA&amp;quot;)&lt;br /&gt;
  cmd.mview(&amp;quot;store&amp;quot;, object=&amp;quot;AA&amp;quot;)&lt;br /&gt;
  cmd.interpolate(object=&amp;quot;AA&amp;quot;,power=1)&lt;br /&gt;
&lt;br /&gt;
  cmd.madd(&amp;quot;1 x3&amp;quot;); cmd.frame(1000);&lt;br /&gt;
  cmd.rotate(&amp;quot;x&amp;quot;, -2.0, object=&amp;quot;AA&amp;quot;)&lt;br /&gt;
  cmd.mview(&amp;quot;store&amp;quot;, object=&amp;quot;AA&amp;quot;)&lt;br /&gt;
  cmd.interpolate(object=&amp;quot;AA&amp;quot;,power=1)&lt;br /&gt;
python end&lt;br /&gt;
mview store&lt;br /&gt;
&lt;br /&gt;
madd 1 x40&lt;br /&gt;
frame 470&lt;br /&gt;
mview store&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, object=BB&lt;br /&gt;
&lt;br /&gt;
mview interpolate, object=AA&lt;br /&gt;
mview interpolate, object=BB&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
&lt;br /&gt;
mplay&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Representations===&lt;br /&gt;
&lt;br /&gt;
Scenes are the only way to change representations (eg sticks to cartoon).  In PyMOL to show representation changes we need to have a list of scenes, that we then assign to a given frame.  Once this is done we can reinterpolate through scenes to have beautifully smooth transitions.&lt;br /&gt;
&lt;br /&gt;
PyMOL makes it very easy to setup your scenes--for that ''look''--and save them in a stack (and, now, even move them around).  We covered scenes already in the tutorial, so please check that if you need more help on scenes, or see [[:Category:Scenes]] for more commands and hints.&lt;br /&gt;
&lt;br /&gt;
In PyMOL, to attach a scene to a frame (or, technically a frame to a scene) we simply do the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
mview store, scene=sceneName&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's take a look at a simple movie that changes the representation of some object.  This will show a tryptophan going from lines to sticks and back.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot; line=1&amp;gt;&lt;br /&gt;
set scene_buttons, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
&lt;br /&gt;
# make a 90 frame movie, all STATE 1.&lt;br /&gt;
mset 1 x90&lt;br /&gt;
&lt;br /&gt;
# load a trypotphan fragment&lt;br /&gt;
frag trp&lt;br /&gt;
&lt;br /&gt;
# Tell PyMOL to call this current view '001'.&lt;br /&gt;
scene 001, store&lt;br /&gt;
# goto frame 1 and store this scene &amp;amp; camera&lt;br /&gt;
frame 1&lt;br /&gt;
mview store, scene=001&lt;br /&gt;
&lt;br /&gt;
# setup the next 'view'&lt;br /&gt;
as sticks&lt;br /&gt;
scene 002, store&lt;br /&gt;
&lt;br /&gt;
# goto frame 60 and show sticks&lt;br /&gt;
frame 45&lt;br /&gt;
mview store, scene=002&lt;br /&gt;
&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
mplay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To show you how easy adding camera motions + representations is, simply insert after line 17 (''as sticks'') a new line 18 that only has&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
orient&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's what's happening in the movie, above.  Lines 1&amp;amp;mdash;2 set PyMOL up to show you [[scene_buttons|scene buttons]] and the [[Movie_panel|movie panel]].  Line 5 makes a 90 '''frame''' movie that only spans the first state.  Line 8 makes the TRP fragment from PyMOL's stored knowledge of residues.  Line 11 asks PyMOL to store this current 'view' as a [[scene]] and call that scene ''001''.  Now that a scene is made, we need to associate with a frame.  So, we goto frame 1 in line 13.  In line 14 we actually make the scene-to-frame assignment with the [[mview]] store command, specifying the mapping between scene 001 and frame 1.  Lines 17 and 18 change the representation from lines to sticks and then orients the TRP residue (which causes the camera to move).  In line 19, we save this new camera position and the sticks representation of TRP in the scene called ''002''.  Next, in line 22, we go somewhere ahead in the movie, here 1/2 way to the end.  Line 23 assigns scene ''002'' to frame 45.  Lastly, because we changed the camera position, we need to reniterpolate it's movement, and that's done in line 25.  As you know [[mplay]] just plays the movie.&lt;br /&gt;
&lt;br /&gt;
* '''Hint''': Clear frames with '''mview clear'''&lt;br /&gt;
* '''Hint''': Clear scenes with '''scene sceneName, delete'''; you can delete all scenes with '''scene *, delete'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we have that, let's learn more complex tricks with motion and representations!&lt;br /&gt;
&lt;br /&gt;
===Motions &amp;amp;amp; Representations ===&lt;br /&gt;
&lt;br /&gt;
Let's look at the inhibitor complex again, (pdb 1TE1).  This time, we would like to make a more compex movie that shows moving objects (not the camera) and changing representations.  I do not want wrapping b/c I slide the molecule off the sceen.  To ensure that, I allow 0 transition frames, by setting the last frame in the movie  by '''mview store'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# b/c there will be motions, we need matrix_mode&lt;br /&gt;
reinitialize&lt;br /&gt;
set matrix_mode, 1&lt;br /&gt;
set scene_buttons, 1&lt;br /&gt;
set movie_panel, 1&lt;br /&gt;
&lt;br /&gt;
# setup the movie for 410 frames&lt;br /&gt;
mset 1 x240&lt;br /&gt;
&lt;br /&gt;
# load the complex &amp;amp; set it up&lt;br /&gt;
fetch 1te1, async=0&lt;br /&gt;
as cartoon&lt;br /&gt;
remove resn HOH&lt;br /&gt;
extract AA, c. A&lt;br /&gt;
extract BB, c. B&lt;br /&gt;
&lt;br /&gt;
# zoom in on the binding pocket&lt;br /&gt;
### cut below here and paste into script ###&lt;br /&gt;
set_view (\&lt;br /&gt;
     0.478582859,   -0.269358903,    0.835705996,\&lt;br /&gt;
     0.805654645,   -0.243718535,   -0.539927721,\&lt;br /&gt;
     0.349110991,    0.931690335,    0.100370787,\&lt;br /&gt;
     0.000000000,    0.000000000,  -49.810981750,\&lt;br /&gt;
    35.418403625,   72.805625916,   52.437019348,\&lt;br /&gt;
    39.271358490,   60.350605011,  -20.000000000 )&lt;br /&gt;
### cut above here and paste into script ###&lt;br /&gt;
&lt;br /&gt;
# store object AA's position&lt;br /&gt;
frame 1&lt;br /&gt;
scene 001, store, message=&amp;quot;This doesn't quite give us a good feel for what's going on.&amp;quot;&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, scene=001&lt;br /&gt;
&lt;br /&gt;
# change up the scene a bit&lt;br /&gt;
frame 60&lt;br /&gt;
color grey, AA&lt;br /&gt;
color marine, BB&lt;br /&gt;
scene 002, store, message=&amp;quot;Recoloring helps a little.&amp;quot;&lt;br /&gt;
mview store, scene=002&lt;br /&gt;
&lt;br /&gt;
# show chain B as surface&lt;br /&gt;
frame 120&lt;br /&gt;
as surface, BB&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
scene 003, store, message=&amp;quot;Surface helps alot.&amp;quot;&lt;br /&gt;
mview store, 120, scene=003&lt;br /&gt;
&lt;br /&gt;
# show more&lt;br /&gt;
frame 180&lt;br /&gt;
select inhib, AA and i. 148-155; &lt;br /&gt;
show sticks, inhib&lt;br /&gt;
color magenta, inhib&lt;br /&gt;
select nn, BB within 7 of inhib; deselect;&lt;br /&gt;
set transparency, 0.65, nn&lt;br /&gt;
show sticks, nn&lt;br /&gt;
set_bond stick_color, chartreuse, nn&lt;br /&gt;
scene 004, store, message=&amp;quot;Coloring, transparency, and other objects help more...&amp;quot;&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview store, 180&lt;br /&gt;
&lt;br /&gt;
# move AA away&lt;br /&gt;
frame 240&lt;br /&gt;
translate [20, 10, 80], object=AA&lt;br /&gt;
mview store, object=AA&lt;br /&gt;
mview reinterpolate, object=AA&lt;br /&gt;
mview store, 240&lt;br /&gt;
mview reinterpolate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Hint''': Use '''mview store, frameNo, scene=sceneName''' to save complex scenes.  If you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
frame X&lt;br /&gt;
scene Y&lt;br /&gt;
mview store X, scene=Y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
then the PyMOL GUI may not have caught up to the correct place before saving the scene information.&lt;br /&gt;
* '''Hint''': Things can get confusing with frames, states and whatnot.  A good idea is to ALWAYS set your frame when setting a new scene.  If you don't '''mview store''' might save a different frame number than you think you're on.  Or, you can save the frame number too with, '''mview store, frameNo, scene=XXX, object=YYY'''.&lt;br /&gt;
* '''Hint''': Use [[deselect]] in a script to hide the dots from making a new selection.&lt;br /&gt;
* '''Hint''': Use [[set_bond]] to set bond properties, like colors, on [[sticks]] representations.&lt;br /&gt;
&lt;br /&gt;
=== Extras ===&lt;br /&gt;
&lt;br /&gt;
== Exporting your Movie ==&lt;br /&gt;
This wiki already has lots of information on how to convert your PyMOL movie to another format.  Check out [[Making_Movies|those]] [[Software_Codecs|pages]].&lt;br /&gt;
&lt;br /&gt;
Once you've setup your movie as in any of the previous examples, you have a couple options for making a movie.&lt;br /&gt;
&lt;br /&gt;
'''Export from PyMOL''': Newer PyMOLs support &lt;br /&gt;
*File-&amp;gt;Save Movie As-&amp;gt;MPEG&lt;br /&gt;
*File-&amp;gt;Save Movie As-&amp;gt;PNG Images&lt;br /&gt;
from the menu.&lt;br /&gt;
&lt;br /&gt;
'''mpng''': You can still use the good old [[mpng]] option to save all your frames to disk.  You can then compile them into a MPEG (see below).&lt;br /&gt;
&lt;br /&gt;
'''Old Style''': One of the older scripting styles was to make minor changes and dump PNGs.  This is essentially obviated with PyMOL's new movie-making functionality.  The '''old style''' was to simply call cmd.png every time you made a scene change.&lt;br /&gt;
&lt;br /&gt;
Hints:&lt;br /&gt;
* Movie not ray traced?  Make sure you set ray_trace_frames to 1.&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
See [[Software_Codecs]] for information on how to stitch together movies from PNGs and optimize them for great crisp-looking movies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Movies]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Label&amp;diff=13841</id>
		<title>Label</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Label&amp;diff=13841"/>
		<updated>2009-06-25T22:35:53Z</updated>

		<summary type="html">&lt;p&gt;Tstout: /* Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Pl.png|right|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The [[Label]] command controls how PyMOL draws text labels for PyMOL objects.  Labeling is important so there are many options for your fine tuning needs.  You can change the [[Label_size|label size]], [[Label_color|label color]], positioning, [[Label_font_id|font]], the [[Label_outline_color|label outline color]] that masks the font and much, much more.&lt;br /&gt;
&lt;br /&gt;
You can have PyMOL label atoms by properties or arbitrary strings as you want; you can even use Unicode fonts for special symbols like, &amp;lt;math&amp;gt;\alpha, \beta, \pm, \textrm{\AA}&amp;lt;/math&amp;gt;, etc.&lt;br /&gt;
&lt;br /&gt;
The following gallery shows some examples of how extensible the [[Label]] command is.  &lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;180px&amp;quot; widths=&amp;quot;200px&amp;quot; align=&amp;quot;center&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
Image:Label_pre.png|Simple label&lt;br /&gt;
Image:New_fonts.jpeg|Example showing usage of Unicode fonts for special characters&lt;br /&gt;
Image:Font_ex.png|Another example with Unicode fonts&lt;br /&gt;
Image:Label_ex.png|Example label&lt;br /&gt;
Image:Ls0.png|Label shadows turned off&lt;br /&gt;
Image:Ls2.png|Label shadows turned on&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Built-in Object Properties==&lt;br /&gt;
Aside from arbitrary string labels, like &amp;quot;This is the catalytic residue&amp;quot; for an atom/residue you can also use the following built-in molecular properties:&lt;br /&gt;
* '''name''', the atom name&lt;br /&gt;
* '''resn''', the residue name&lt;br /&gt;
*'''resi''', the residue number/identifier&lt;br /&gt;
*'''chain''', the chain name&lt;br /&gt;
*'''q''', charge&lt;br /&gt;
*'''b''', the occupancy/b-factor&lt;br /&gt;
*'''segi''', the segment identifier&lt;br /&gt;
*'''type''' ''(ATOM,HETATM)'', the type of atom&lt;br /&gt;
*'''formal_charge''', the formal charge&lt;br /&gt;
*'''partial_charge''', the partial charge&lt;br /&gt;
*'''numeric_type''', the numeric type&lt;br /&gt;
*'''text_type''', the text type&lt;br /&gt;
&lt;br /&gt;
You can use one of these properties as:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# simple example: label residue 22's atoms with their names&lt;br /&gt;
label i. 22, name&lt;br /&gt;
&lt;br /&gt;
# Label residue #44's alpha carbon with it's residue name, residue number and B-factor.&lt;br /&gt;
label n. CA and i. 44, &amp;quot;(%s, %s, %s&amp;quot;) % (resn, resi, b)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the syntax and examples below for more info.&lt;br /&gt;
&lt;br /&gt;
=Syntax=&lt;br /&gt;
To use the label command follow this syntax:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# labeling syntax&lt;br /&gt;
label [ selection[, expression]]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''selection''' is some object/selection you want to label and '''expression''' is some string (or set of strings) which PyMOL is to use to label the given selection.&lt;br /&gt;
&lt;br /&gt;
We have plenty of examples.  See [[#Examples|the examples]] below.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
Here are all the label settings and their general effect.  For each label setting, see the respective web page for more details.&lt;br /&gt;
&lt;br /&gt;
'''[[label_angle_digits]]'''&lt;br /&gt;
:: (no idea)&lt;br /&gt;
'''[[label_distance_digits]]'''&lt;br /&gt;
:: (no idea)&lt;br /&gt;
'''[[label_shadow_mode]]'''&lt;br /&gt;
:: sets whether or not PyMOL will ray trace shadows for your label text.  Eg: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;set label_shadow_mode, 2&amp;lt;/source&amp;gt;&lt;br /&gt;
'''[[label_color]]'''&lt;br /&gt;
:: sets the color of the label text.  Note that you can have labels of different colors for different objects or selections. Some examples:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;# per-object:&lt;br /&gt;
&lt;br /&gt;
set label-color, color-name, object-name  #eg, set label-color, magenta, /protein&lt;br /&gt;
&lt;br /&gt;
# per-atom:&lt;br /&gt;
&lt;br /&gt;
set label-color, color-name, selection    #eg, set label-color, marine, /protein/A/A/23/CA&lt;br /&gt;
&lt;br /&gt;
# another example&lt;br /&gt;
&lt;br /&gt;
fragment arg&lt;br /&gt;
label all, name&lt;br /&gt;
set label_color, yellow, arg&lt;br /&gt;
set label_color, red, elem c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[label_font_id]]'''&lt;br /&gt;
:: sets the font to render your label.  There are 12 different fonts from 5&amp;amp;mdash;16.  Numbers 15 and 16 are special for unicode.  Eg: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;set label_font_id, 12&amp;lt;/source&amp;gt;&lt;br /&gt;
'''[[label_size]]'''&lt;br /&gt;
:: sets the size of the text.  You can use positive numbers 2, 3, 4, etc for point sizes, or negative sizes for Angstrom-based sizes: A 2Ang font woukld then be -2.  Eg: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;set label_size, -2&amp;lt;/source&amp;gt;&lt;br /&gt;
'''[[label_digits]]'''&lt;br /&gt;
:: (no idea)&lt;br /&gt;
'''[[label_outline_color]]'''&lt;br /&gt;
:: each label is outlined (so you can do white-on-white labels, for example).  This options sets the color of the label outline.  Eg. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;set label_outline_color, orange&amp;lt;/source&amp;gt;&lt;br /&gt;
'''[[label_dihedral_digits]]'''&lt;br /&gt;
:: (no idea)&lt;br /&gt;
'''[[label_position]]'''&lt;br /&gt;
:: sets any offset from the original X,Y,Z coordinates for the label.  If you like to use the mouse, you can enter [[edit_mode]] and '''ctrl-middle-click''' to drag labels around; '''ctrl-shift-left_click''' will let you move the labels in the z-direction.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#1.&lt;br /&gt;
# make a very simple label on the 14th alpha carbon.&lt;br /&gt;
label n. CA and i. 14, &amp;quot;This is carbon 14.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#2.&lt;br /&gt;
# make a fake scene label; use this to label entire scenes, not just atoms/bonds.&lt;br /&gt;
pseudoatom foo&lt;br /&gt;
label foo, &amp;quot;Once upon a time...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#3.&lt;br /&gt;
# make a huge label&lt;br /&gt;
set label_size, -5&lt;br /&gt;
pseudoatom foo&lt;br /&gt;
label foo, &amp;quot;This is large text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#4. Partial Charge&lt;br /&gt;
label (chain A),chain&lt;br /&gt;
label (n;ca),&amp;quot;%s-%s&amp;quot; % (resn,resi)&lt;br /&gt;
label (resi 200),&amp;quot;%1.3f&amp;quot; % partial_charge&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#5. The gallery image above Label_ex.png was created with this code&lt;br /&gt;
#   and finally, some labels were moved around in '''edit_mode'''.&lt;br /&gt;
label (resi 200),&amp;quot;%1.3f&amp;quot; % b&lt;br /&gt;
set label_font_id, 10&lt;br /&gt;
set label_size, 10&lt;br /&gt;
&lt;br /&gt;
#6. This example shows how to label a selection with the &lt;br /&gt;
#   XYZ coordinates of the atoms &lt;br /&gt;
from pymol import stored&lt;br /&gt;
stored.pos = []&lt;br /&gt;
# select the carbon atoms in my hetero atoms to label&lt;br /&gt;
select nn, het and e. C&lt;br /&gt;
# get the XYZ coordinates and put htem into stored.pos&lt;br /&gt;
iterate_state 1, (nn), stored.pos.append((x,y,z))&lt;br /&gt;
# label all N atoms.  You need the pop() function or else&lt;br /&gt;
# PyMOL will complain b/c you didn't provide enough coords.&lt;br /&gt;
label nn, (&amp;quot;%5.5s, %5.5s, %5.5s&amp;quot;) %  stored.pos.pop()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= User Comments =&lt;br /&gt;
==Labels Using ID Numbers==&lt;br /&gt;
The following commnent,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
label SELECTION, &amp;quot; %s&amp;quot; % ID &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
labels the SELECTION with atom ID numbers.&lt;br /&gt;
&lt;br /&gt;
You can make more complicated selections/lables such as&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
label SELECTION, &amp;quot; %s:%s %s&amp;quot; % (resi, resn, name)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
which will give you something like &amp;quot;GLU:139 CG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Labels Using One Letter Abbreviations==&lt;br /&gt;
* First, Add this to your $HOME/.pymolrc  file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# start $HOME/.pymolrc modification&lt;br /&gt;
one_letter ={'VAL':'V', 'ILE':'I', 'LEU':'L', 'GLU':'E', 'GLN':'Q', \&lt;br /&gt;
'ASP':'D', 'ASN':'N', 'HIS':'H', 'TRP':'W', 'PHE':'F', 'TYR':'Y',    \&lt;br /&gt;
'ARG':'R', 'LYS':'K', 'SER':'S', 'THR':'T', 'MET':'M', 'ALA':'A',    \&lt;br /&gt;
'GLY':'G', 'PRO':'P', 'CYS':'C'}&lt;br /&gt;
# end modification&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Second, instead of:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
label n. ca, resn&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
label n. ca, one_letter[resn]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[:Category:Labeling]]&lt;br /&gt;
&lt;br /&gt;
All the settings posted above.&lt;br /&gt;
&lt;br /&gt;
[[Category:Labeling|Label]]&lt;br /&gt;
[[Category:Commands|Label]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Talk:Png&amp;diff=250</id>
		<title>Talk:Png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Talk:Png&amp;diff=250"/>
		<updated>2006-10-06T02:20:36Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This is an important one &amp;amp; should definitely end up on the FAQ list !&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Stick_transparency&amp;diff=10496</id>
		<title>Stick transparency</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Stick_transparency&amp;diff=10496"/>
		<updated>2006-09-24T23:25:25Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The setting &amp;quot;stick_transparency&amp;quot; allows one to set the degree of transparency for stick objects, independent of all other objects.  Allowable values range from 0 (fully opaque) to 1 (fully transparent, i.e. invisible).&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set stick_transparency, 0.50   # Makes sticks 50-percent transparent&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Open the images to actually see the details!&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Stick_trans_zero.png|sticks with no transparency&lt;br /&gt;
Image:Stick_trans_50.png|sticks with 0.5 transparency&lt;br /&gt;
Image:Stick_trans_90.png|sticks with 0.9 transparency&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
&lt;br /&gt;
Stick transparency works best with &amp;quot;unilayer&amp;quot; transparency (Setting menu &amp;gt; transparency &amp;gt; Unilayer) rather than &amp;quot;multilayer&amp;quot;, which leads to odd artifacts where the sticks join.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Stick_trans_50-multi.png|sticks with 0.5 transparency and multilayer transparency&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_trans_50-multi.png&amp;diff=2843</id>
		<title>File:Stick trans 50-multi.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_trans_50-multi.png&amp;diff=2843"/>
		<updated>2006-09-24T23:25:11Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Stick_transparency&amp;diff=10495</id>
		<title>Stick transparency</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Stick_transparency&amp;diff=10495"/>
		<updated>2006-09-24T23:21:34Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The setting &amp;quot;stick_transparency&amp;quot; allows one to set the degree of transparency for stick objects, independent of all other objects.  Allowable values range from 0 (fully opaque) to 1 (fully transparent, i.e. invisible).&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set stick_transparency, 0.50   # Makes sticks 50-percent transparent&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Open the images to actually see the details!&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Stick_trans_zero.png|sticks with no transparency&lt;br /&gt;
Image:Stick_trans_50.png|sticks with 0.5 transparency&lt;br /&gt;
Image:Stick_trans_90.png|sticks with 0.9 transparency&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_trans_90.png&amp;diff=2721</id>
		<title>File:Stick trans 90.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_trans_90.png&amp;diff=2721"/>
		<updated>2006-09-24T23:20:05Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_trans_50.png&amp;diff=2596</id>
		<title>File:Stick trans 50.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_trans_50.png&amp;diff=2596"/>
		<updated>2006-09-24T23:19:53Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_trans_zero.png&amp;diff=2845</id>
		<title>File:Stick trans zero.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_trans_zero.png&amp;diff=2845"/>
		<updated>2006-09-24T23:19:39Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Settings&amp;diff=10119</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Settings&amp;diff=10119"/>
		<updated>2006-09-24T22:45:45Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the PyMol settings.  If you feel like documenting them, and what they do, feel free.  42 done, 476 to go !&lt;br /&gt;
&lt;br /&gt;
  active_selections              ray_default_renderer         &lt;br /&gt;
  [[all_states]]                     ray_direct_shade             &lt;br /&gt;
  ambient                        ray_hint_camera              &lt;br /&gt;
  angle_label_position           ray_hint_shadow              &lt;br /&gt;
  angle_size                     ray_improve_shadows          &lt;br /&gt;
  animation                      ray_interior_color           &lt;br /&gt;
  animation_duration             ray_interior_mode            &lt;br /&gt;
  [[antialias]]                      ray_interior_reflect         &lt;br /&gt;
  async_builds                   ray_interior_shadows         &lt;br /&gt;
  atom_name_wildcard             ray_interior_texture         &lt;br /&gt;
  auto_classify_atoms            ray_legacy_lighting          &lt;br /&gt;
  auto_color                     ray_max_passes               &lt;br /&gt;
  auto_dss                       [[ray_opaque_background]]       &lt;br /&gt;
  auto_hide_selections           [[ray_orthoscopic]]              &lt;br /&gt;
  auto_indicate_flags            ray_oversample_cutoff        &lt;br /&gt;
  auto_number_selections         ray_pixel_scale              &lt;br /&gt;
  auto_remove_hydrogens          [[ray_shadow]]                   &lt;br /&gt;
  auto_sculpt                    ray_shadow_decay_factor      &lt;br /&gt;
  auto_show_lines                ray_shadow_decay_range       &lt;br /&gt;
  auto_show_nonbonded            ray_shadow_fudge             &lt;br /&gt;
  auto_show_selections           [[ray_shadows]]                  &lt;br /&gt;
  auto_show_spheres              ray_texture                  &lt;br /&gt;
  [[auto_zoom]]                      ray_texture_settings         &lt;br /&gt;
  [[backface_cull]]                  ray_trace_depth_factor       &lt;br /&gt;
  batch_prefix                   ray_trace_disco_factor       &lt;br /&gt;
  [[bg_rgb]]                         [[ray_trace_fog]]                &lt;br /&gt;
  bonding_vdw_cutoff             ray_trace_fog_start          &lt;br /&gt;
  button_mode                    [[ray_trace_frames]]            &lt;br /&gt;
  button_mode_name               ray_trace_gain               &lt;br /&gt;
  cache_display                  ray_trace_mode               &lt;br /&gt;
  cache_frames                   ray_trace_slope_factor       &lt;br /&gt;
  cache_memory                   ray_transparency_contrast    &lt;br /&gt;
  [[cartoon_color]]                  ray_transparency_shadows     &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_cylindrical_helices]]    ray_transparency_spec_cut    &lt;br /&gt;
  cartoon_debug                  ray_transparency_specular    &lt;br /&gt;
  [[cartoon_discrete_colors]]        ray_triangle_fudge           &lt;br /&gt;
  cartoon_dumbbell_length        reflect                      &lt;br /&gt;
  cartoon_dumbbell_radius        reflect_power                &lt;br /&gt;
  cartoon_dumbbell_width         retain_order                 &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_fancy_helices]]          [[ribbon_color]]                 &lt;br /&gt;
  [[cartoon_fancy_sheets]]           ribbon_nucleic_acid_mode     &lt;br /&gt;
  cartoon_flat_cycles            ribbon_power                 &lt;br /&gt;
  [[cartoon_flat_sheets]]            ribbon_power_b               &lt;br /&gt;
  Cartoon_helix_radius           ribbon_radius                &lt;br /&gt;
  [[cartoon_highlight_color]]        [[ribbon_sampling]]              &lt;br /&gt;
  cartoon_ladder_color           ribbon_side_chain_helper     &lt;br /&gt;
  cartoon_ladder_mode            ribbon_smooth                &lt;br /&gt;
  cartoon_ladder_radius          ribbon_throw                 &lt;br /&gt;
  cartoon_loop_cap               ribbon_trace_atoms           &lt;br /&gt;
  cartoon_loop_quality           [[ribbon_width]]                 &lt;br /&gt;
  cartoon_loop_radius            robust_logs                  &lt;br /&gt;
  [[cartoon_nucleic_acid_color]]     rock_delay                   &lt;br /&gt;
  [[cartoon_nucleic_acid_mode]]      roving_byres                 &lt;br /&gt;
  cartoon_oval_length            roving_cartoon               &lt;br /&gt;
  cartoon_oval_quality           roving_delay                 &lt;br /&gt;
  cartoon_oval_width             roving_detail                &lt;br /&gt;
  cartoon_power                  roving_isomesh               &lt;br /&gt;
  cartoon_power_b                roving_isosurface            &lt;br /&gt;
  cartoon_putty_quality          roving_labels                &lt;br /&gt;
  cartoon_putty_radius           roving_lines                 &lt;br /&gt;
  cartoon_putty_range            roving_map1_level            &lt;br /&gt;
  cartoon_putty_scale_max        roving_map1_name             &lt;br /&gt;
  cartoon_putty_scale_min        roving_map2_level            &lt;br /&gt;
  cartoon_putty_scale_power      roving_map2_name             &lt;br /&gt;
  cartoon_rect_length            roving_map3_level            &lt;br /&gt;
  cartoon_rect_width             roving_map3_name             &lt;br /&gt;
  cartoon_refine                 roving_nb_spheres            &lt;br /&gt;
  cartoon_refine_normals         roving_nonbonded             &lt;br /&gt;
  cartoon_refine_tips            roving_origin                &lt;br /&gt;
  cartoon_ring_color             roving_origin_z              &lt;br /&gt;
  cartoon_ring_finder            roving_origin_z_cushion      &lt;br /&gt;
  [[cartoon_ring_mode]]              roving_polar_contacts        &lt;br /&gt;
  cartoon_ring_radius            roving_polar_cutoff          &lt;br /&gt;
  [[cartoon_ring_transparency]]      roving_ribbon                &lt;br /&gt;
  cartoon_ring_width             roving_selection             &lt;br /&gt;
  [[cartoon_round_helices]]          roving_spheres               &lt;br /&gt;
  [[cartoon_sampling]]               roving_sticks                &lt;br /&gt;
  cartoon_side_chain_helper      scene_animation              &lt;br /&gt;
  cartoon_smooth_cycles          scene_animation_duration     &lt;br /&gt;
  cartoon_smooth_first           scene_current_name           &lt;br /&gt;
  cartoon_smooth_last            scene_loop                   &lt;br /&gt;
  [[cartoon_smooth_loops]]           scene_restart_movie_delay    &lt;br /&gt;
  cartoon_throw                  scenes_changed               &lt;br /&gt;
  cartoon_trace_atoms            sculpt_angl_weight           &lt;br /&gt;
  [[cartoon_transparency]]           sculpt_auto_center           &lt;br /&gt;
  cartoon_tube_cap               sculpt_avd_excl              &lt;br /&gt;
  cartoon_tube_quality           sculpt_avd_gap               &lt;br /&gt;
  cartoon_tube_radius            sculpt_avd_range             &lt;br /&gt;
  cavity_cull                    sculpt_avd_weight            &lt;br /&gt;
  cgo_dot_radius                 sculpt_bond_weight           &lt;br /&gt;
  cgo_dot_width                  sculpt_field_mask            &lt;br /&gt;
  cgo_line_radius                sculpt_hb_overlap            &lt;br /&gt;
  cgo_line_width                 sculpt_hb_overlap_base       &lt;br /&gt;
  cgo_ray_width_scale            sculpt_line_weight           &lt;br /&gt;
  cgo_sphere_quality             sculpt_max_max               &lt;br /&gt;
  cgo_transparency               sculpt_max_min               &lt;br /&gt;
  clamp_colors                   sculpt_max_scale             &lt;br /&gt;
  connect_bonded                 sculpt_max_weight            &lt;br /&gt;
  connect_cutoff                 sculpt_memory                &lt;br /&gt;
  connect_mode                   sculpt_min_max               &lt;br /&gt;
  coulomb_cutoff                 sculpt_min_min               &lt;br /&gt;
  coulomb_dielectric             sculpt_min_scale             &lt;br /&gt;
  coulomb_units_factor           sculpt_min_weight            &lt;br /&gt;
  cull_spheres                   sculpt_nb_interval           &lt;br /&gt;
  [[Dash_Gap]]                       sculpt_plan_weight           &lt;br /&gt;
  [[Dash_Length]]                    sculpt_pyra_weight           &lt;br /&gt;
  [[Dash_Radius]]                    sculpt_tors_tolerance        &lt;br /&gt;
  [[Dash_Round_Ends]]                sculpt_tors_weight           &lt;br /&gt;
  dash_width                     sculpt_tri_max               &lt;br /&gt;
  debug_pick                     sculpt_tri_min               &lt;br /&gt;
  defer_builds_mode              sculpt_tri_mode              &lt;br /&gt;
  defer_updates                  sculpt_tri_scale             &lt;br /&gt;
  depth_cue                      sculpt_tri_weight            &lt;br /&gt;
  dihedral_label_position        sculpt_vdw_scale             &lt;br /&gt;
  dihedral_size                  sculpt_vdw_scale14           &lt;br /&gt;
  direct                         sculpt_vdw_vis_max           &lt;br /&gt;
  dist_counter                   sculpt_vdw_vis_mid           &lt;br /&gt;
  distance_exclusion             sculpt_vdw_vis_min           &lt;br /&gt;
  dot_color                      sculpt_vdw_vis_mode          &lt;br /&gt;
  dot_density                    sculpt_vdw_weight            &lt;br /&gt;
  dot_hydrogens                  sculpt_vdw_weight14          &lt;br /&gt;
  dot_lighting                   sculpting                    &lt;br /&gt;
  dot_mode                       sculpting_cycles             &lt;br /&gt;
  dot_normals                    secondary_structure          &lt;br /&gt;
  dot_radius                     security                     &lt;br /&gt;
  dot_solvent                    sel_counter&lt;br /&gt;
  [[dot_width]]                      selection_overlay            &lt;br /&gt;
  draw_frames                    selection_round_points       &lt;br /&gt;
  editor_auto_dihedral           selection_visible_only       &lt;br /&gt;
  editor_auto_origin             [[selection_width]]              &lt;br /&gt;
  editor_label_fragments         selection_width_max          &lt;br /&gt;
  fast_idle                      selection_width_scale        &lt;br /&gt;
  fetch_path                     [[seq_view]]                     &lt;br /&gt;
  [[Field_Of_View]]                  seq_view_alignment           &lt;br /&gt;
  fit_iterations                 seq_view_color               &lt;br /&gt;
  fit_tolerance                  seq_view_discrete_by_state   &lt;br /&gt;
  float_labels                   seq_view_fill_char           &lt;br /&gt;
  fog                            seq_view_fill_color          &lt;br /&gt;
  fog_start                      seq_view_format              &lt;br /&gt;
  frame                          seq_view_label_color         &lt;br /&gt;
  full_screen                    seq_view_label_mode          &lt;br /&gt;
  gamma                          seq_view_label_spacing       &lt;br /&gt;
  gaussian_b_adjust              seq_view_label_start         &lt;br /&gt;
  gaussian_b_floor               [[seq_view_location]]            &lt;br /&gt;
  gaussian_resolution            seq_view_overlay             &lt;br /&gt;
  gl_ambient                     seq_view_unaligned_color     &lt;br /&gt;
  h_bond_cone                    seq_view_unaligned_mode      &lt;br /&gt;
  h_bond_cutoff_center           session_file                 &lt;br /&gt;
  h_bond_cutoff_edge             session_migration            &lt;br /&gt;
  h_bond_exclusion               session_version_check        &lt;br /&gt;
  h_bond_max_angle               shininess                    &lt;br /&gt;
  h_bond_power_a                 show_alpha_checker           &lt;br /&gt;
  h_bond_power_b                 show_progress                &lt;br /&gt;
  [[half_bonds]]                     simplify_display_lists       &lt;br /&gt;
  hash_max                       single_image                 &lt;br /&gt;
  hide_underscore_names          slice_dynamic_grid           &lt;br /&gt;
  idle_delay                     slice_dynamic_grid_resolution&lt;br /&gt;
  ignore_case                    slice_grid                   &lt;br /&gt;
  ignore_pdb_segi                slice_height_map             &lt;br /&gt;
  image_dots_per_inch            slice_height_scale           &lt;br /&gt;
  internal_feedback              slice_track_camera           &lt;br /&gt;
  [[Internal Gui|internal_gui]]                   slow_idle                    &lt;br /&gt;
  internal_gui_control_size      smooth_color_triangle        &lt;br /&gt;
  internal_gui_mode              solvent_radius               &lt;br /&gt;
  internal_gui_width             spec_count                   &lt;br /&gt;
  [[internal_prompt]]                spec_direct                  &lt;br /&gt;
  isomesh_auto_state             spec_direct_power            &lt;br /&gt;
  [[label_color]]                    spec_power                   &lt;br /&gt;
  [[Label_font_id]]                  [[spec_reflect]]                 &lt;br /&gt;
  [[Label_outline_color]]            specular                     &lt;br /&gt;
  label_position                 specular_intensity           &lt;br /&gt;
  [[label_shadow_mode]]              [[sphere_color]]                 &lt;br /&gt;
  [[label_size]]                     sphere_mode                  &lt;br /&gt;
  legacy_mouse_zoom              sphere_point_max_size        &lt;br /&gt;
  legacy_vdw_radii               sphere_point_size            &lt;br /&gt;
  light                          sphere_quality               &lt;br /&gt;
  light2                         [[sphere_scale]]                 &lt;br /&gt;
  light3                         sphere_solvent               &lt;br /&gt;
  light4                         sphere_transparency          &lt;br /&gt;
  light5                         spheroid_fill                &lt;br /&gt;
  light6                         spheroid_scale               &lt;br /&gt;
  light7                         spheroid_smooth              &lt;br /&gt;
  light8                         ss_helix_phi_exclude         &lt;br /&gt;
  light9                         ss_helix_phi_include         &lt;br /&gt;
  light_count                    ss_helix_phi_target          &lt;br /&gt;
  line_radius                    ss_helix_psi_exclude         &lt;br /&gt;
  [[line_smooth]]                   ss_helix_psi_include         &lt;br /&gt;
  line_stick_helper              ss_helix_psi_target          &lt;br /&gt;
  line_width                     ss_strand_phi_exclude        &lt;br /&gt;
  log_box_selections             ss_strand_phi_include        &lt;br /&gt;
  log_conformations              ss_strand_phi_target         &lt;br /&gt;
  logging                        ss_strand_psi_exclude        &lt;br /&gt;
  matrix_mode                    ss_strand_psi_include        &lt;br /&gt;
  max_threads                    ss_strand_psi_target         &lt;br /&gt;
  max_triangles                  state                        &lt;br /&gt;
  mesh_color                     static_singletons            &lt;br /&gt;
  mesh_lighting                  stereo                       &lt;br /&gt;
  mesh_mode                      stereo_angle                 &lt;br /&gt;
  mesh_normals                   stereo_double_pump_mono      &lt;br /&gt;
  mesh_quality                   stereo_mode                  &lt;br /&gt;
  mesh_radius                    stereo_shift                 &lt;br /&gt;
  mesh_solvent                   [[stick_ball]]                   &lt;br /&gt;
  mesh_type                      [[stick_ball_ratio]]             &lt;br /&gt;
  mesh_width                     stick_color                  &lt;br /&gt;
  min_mesh_spacing               stick_fixed_radius           &lt;br /&gt;
  mouse_limit                    [[stick_nub]]                    &lt;br /&gt;
  mouse_restart_movie_delay      stick_overlap                &lt;br /&gt;
  mouse_scale                    stick_quality                &lt;br /&gt;
  mouse_selection_mode           stick_radius                 &lt;br /&gt;
  movie_delay                    [[stick_transparency]]           &lt;br /&gt;
  movie_loop                     stick_valence_scale          &lt;br /&gt;
  multiplex                      stop_on_exceptions           &lt;br /&gt;
  no_idle                        surface_best                 &lt;br /&gt;
  nonbonded_size                 surface_carve_cutoff         &lt;br /&gt;
  normal_workaround              surface_carve_selection      &lt;br /&gt;
  normalize_ccp4_maps            surface_carve_state          &lt;br /&gt;
  normalize_grd_maps             surface_circumscribe         &lt;br /&gt;
  normalize_o_maps               surface_clear_cutoff         &lt;br /&gt;
  nvidia_bugs                    surface_clear_selection      &lt;br /&gt;
  opaque_background              surface_clear_state          &lt;br /&gt;
  [[orthoscopic]]                    surface_color                &lt;br /&gt;
  overlay                        surface_debug                &lt;br /&gt;
  overlay_lines                  surface_miserable            &lt;br /&gt;
  pdb_conect_all                 surface_mode                 &lt;br /&gt;
  pdb_discrete_chains            surface_normal               &lt;br /&gt;
  pdb_echo_tags                  surface_optimize_subsets     &lt;br /&gt;
  pdb_hetatm_sort                surface_poor                 &lt;br /&gt;
  pdb_honor_model_number         surface_proximity            &lt;br /&gt;
  pdb_insertions_go_first        surface_quality              &lt;br /&gt;
  pdb_insure_orthogonal          surface_ramp_above_mode      &lt;br /&gt;
  pdb_literal_names              surface_solvent              &lt;br /&gt;
  pdb_no_end_record              surface_trim_cutoff          &lt;br /&gt;
  pdb_reformat_names_mode        surface_trim_factor          &lt;br /&gt;
  pdb_retain_ids                 surface_type                 &lt;br /&gt;
  pdb_standard_order             suspend_updates              &lt;br /&gt;
  pdb_truncate_residue_name      swap_dsn6_bytes              &lt;br /&gt;
  pdb_unbond_cations             sweep_angle                  &lt;br /&gt;
  pdb_use_ter_records            sweep_mode                   &lt;br /&gt;
  [[pickable]]                       sweep_phase                  &lt;br /&gt;
  png_file_gamma                 sweep_speed                  &lt;br /&gt;
  png_screen_gamma               test1                        &lt;br /&gt;
  power                          test2                        &lt;br /&gt;
  pqr_no_chain_id                text                         &lt;br /&gt;
  presentation                   texture_fonts                &lt;br /&gt;
  presentation_auto_quit         [[transparency]]                 &lt;br /&gt;
  presentation_auto_start        transparency_mode            &lt;br /&gt;
  presentation_mode              transparency_picking_mode    &lt;br /&gt;
  preserve_chempy_ids            triangle_max_passes          &lt;br /&gt;
  pymol_space_max_blue           trim_dots                    &lt;br /&gt;
  pymol_space_max_green          [[two_sided_lighting]]&lt;br /&gt;
  pymol_space_max_red            use_display_lists            &lt;br /&gt;
  pymol_space_min_factor         [[valence]]                      &lt;br /&gt;
  raise_exceptions               valence_default              &lt;br /&gt;
  rank_assisted_sorts            valence_size                 &lt;br /&gt;
  ray_blend_blue                 validate_object_names        &lt;br /&gt;
  ray_blend_colors               virtual_trackball            &lt;br /&gt;
  ray_blend_green                wildcard                     &lt;br /&gt;
  ray_blend_red                  wizard_prompt_mode           &lt;br /&gt;
  ray_color_ramps                wrap_output                  &lt;br /&gt;
&lt;br /&gt;
[[Category:Settings|All Settings]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Stick_ball_ratio&amp;diff=8981</id>
		<title>Stick ball ratio</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Stick_ball_ratio&amp;diff=8981"/>
		<updated>2006-09-24T18:50:42Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The setting &amp;quot;stick_ball_ratio&amp;quot; controls the relative ratio between the radius of sticks connecting bonded atoms and the radius of the atom spheres.  Note that simply setting &amp;quot;stick_ball, on&amp;quot; will result in balls with the same radius as the sticks and so will appear only slightly different (the joins will be smoother).  Changing the stick_ball_ratio without setting &amp;quot;stick_ball, on&amp;quot; will -- obviously -- have no apparent effect.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set stick_ball_ratio, 1.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set stick_ball, on   # displays atoms as balls joined by sticks&lt;br /&gt;
set stick_ball, off  # displays only connected sticks&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Open the images to actually see the details!&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:stick_ball_off.png|stick_ball, off&lt;br /&gt;
Image:stick_ball_on.png|stick_ball, on&lt;br /&gt;
Image:Stick_ball_ratio_1.5.png|stick_ball &amp;quot;on&amp;quot; with stick_ball_ratio at 1.5&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Stick_ball&amp;diff=5567</id>
		<title>Stick ball</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Stick_ball&amp;diff=5567"/>
		<updated>2006-09-24T18:41:05Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The setting &amp;quot;stick_ball&amp;quot; controls whether bonded atoms are shown simply as joined sticks (set stick_ball, off) or as traditional &amp;quot;ball-and-stick&amp;quot; representation (set stick_ball, on).  Note that simply setting stick_ball on will result in balls with the same radius as the sticks and so will appear only slightly different (the joins will be smoother).&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set stick_ball, on   # displays atoms as balls joined by sticks&lt;br /&gt;
set stick_ball, off  # displays only connected sticks&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Open the images to actually see the details!&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:stick_ball_off.png|stick_ball, off&lt;br /&gt;
Image:stick_ball_on.png|stick_ball, on&lt;br /&gt;
Image:Stick_ball_ratio_1.5.png|stick_ball &amp;quot;on&amp;quot; with stick_ball_ratio at 1.5&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_ball_ratio_1.5.png&amp;diff=2839</id>
		<title>File:Stick ball ratio 1.5.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_ball_ratio_1.5.png&amp;diff=2839"/>
		<updated>2006-09-24T18:37:32Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_ball_on.png&amp;diff=2715</id>
		<title>File:Stick ball on.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_ball_on.png&amp;diff=2715"/>
		<updated>2006-09-24T18:37:14Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Stick_ball_off.png&amp;diff=2590</id>
		<title>File:Stick ball off.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Stick_ball_off.png&amp;diff=2590"/>
		<updated>2006-09-24T18:37:00Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Settings&amp;diff=10118</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Settings&amp;diff=10118"/>
		<updated>2006-09-24T18:17:28Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the PyMol settings.  If you feel like documenting them, and what they do, feel free.  42 done, 476 to go !&lt;br /&gt;
&lt;br /&gt;
  active_selections              ray_default_renderer         &lt;br /&gt;
  [[all_states]]                     ray_direct_shade             &lt;br /&gt;
  ambient                        ray_hint_camera              &lt;br /&gt;
  angle_label_position           ray_hint_shadow              &lt;br /&gt;
  angle_size                     ray_improve_shadows          &lt;br /&gt;
  animation                      ray_interior_color           &lt;br /&gt;
  animation_duration             ray_interior_mode            &lt;br /&gt;
  [[antialias]]                      ray_interior_reflect         &lt;br /&gt;
  async_builds                   ray_interior_shadows         &lt;br /&gt;
  atom_name_wildcard             ray_interior_texture         &lt;br /&gt;
  auto_classify_atoms            ray_legacy_lighting          &lt;br /&gt;
  auto_color                     ray_max_passes               &lt;br /&gt;
  auto_dss                       [[ray_opaque_background]]       &lt;br /&gt;
  auto_hide_selections           [[ray_orthoscopic]]              &lt;br /&gt;
  auto_indicate_flags            ray_oversample_cutoff        &lt;br /&gt;
  auto_number_selections         ray_pixel_scale              &lt;br /&gt;
  auto_remove_hydrogens          [[ray_shadow]]                   &lt;br /&gt;
  auto_sculpt                    ray_shadow_decay_factor      &lt;br /&gt;
  auto_show_lines                ray_shadow_decay_range       &lt;br /&gt;
  auto_show_nonbonded            ray_shadow_fudge             &lt;br /&gt;
  auto_show_selections           [[ray_shadows]]                  &lt;br /&gt;
  auto_show_spheres              ray_texture                  &lt;br /&gt;
  [[auto_zoom]]                      ray_texture_settings         &lt;br /&gt;
  [[backface_cull]]                  ray_trace_depth_factor       &lt;br /&gt;
  batch_prefix                   ray_trace_disco_factor       &lt;br /&gt;
  [[bg_rgb]]                         [[ray_trace_fog]]                &lt;br /&gt;
  bonding_vdw_cutoff             ray_trace_fog_start          &lt;br /&gt;
  button_mode                    [[ray_trace_frames]]            &lt;br /&gt;
  button_mode_name               ray_trace_gain               &lt;br /&gt;
  cache_display                  ray_trace_mode               &lt;br /&gt;
  cache_frames                   ray_trace_slope_factor       &lt;br /&gt;
  cache_memory                   ray_transparency_contrast    &lt;br /&gt;
  [[cartoon_color]]                  ray_transparency_shadows     &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_cylindrical_helices]]    ray_transparency_spec_cut    &lt;br /&gt;
  cartoon_debug                  ray_transparency_specular    &lt;br /&gt;
  [[cartoon_discrete_colors]]        ray_triangle_fudge           &lt;br /&gt;
  cartoon_dumbbell_length        reflect                      &lt;br /&gt;
  cartoon_dumbbell_radius        reflect_power                &lt;br /&gt;
  cartoon_dumbbell_width         retain_order                 &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_fancy_helices]]          [[ribbon_color]]                 &lt;br /&gt;
  [[cartoon_fancy_sheets]]           ribbon_nucleic_acid_mode     &lt;br /&gt;
  cartoon_flat_cycles            ribbon_power                 &lt;br /&gt;
  [[cartoon_flat_sheets]]            ribbon_power_b               &lt;br /&gt;
  Cartoon_helix_radius           ribbon_radius                &lt;br /&gt;
  [[cartoon_highlight_color]]        [[ribbon_sampling]]              &lt;br /&gt;
  cartoon_ladder_color           ribbon_side_chain_helper     &lt;br /&gt;
  cartoon_ladder_mode            ribbon_smooth                &lt;br /&gt;
  cartoon_ladder_radius          ribbon_throw                 &lt;br /&gt;
  cartoon_loop_cap               ribbon_trace_atoms           &lt;br /&gt;
  cartoon_loop_quality           [[ribbon_width]]                 &lt;br /&gt;
  cartoon_loop_radius            robust_logs                  &lt;br /&gt;
  [[cartoon_nucleic_acid_color]]     rock_delay                   &lt;br /&gt;
  [[cartoon_nucleic_acid_mode]]      roving_byres                 &lt;br /&gt;
  cartoon_oval_length            roving_cartoon               &lt;br /&gt;
  cartoon_oval_quality           roving_delay                 &lt;br /&gt;
  cartoon_oval_width             roving_detail                &lt;br /&gt;
  cartoon_power                  roving_isomesh               &lt;br /&gt;
  cartoon_power_b                roving_isosurface            &lt;br /&gt;
  cartoon_putty_quality          roving_labels                &lt;br /&gt;
  cartoon_putty_radius           roving_lines                 &lt;br /&gt;
  cartoon_putty_range            roving_map1_level            &lt;br /&gt;
  cartoon_putty_scale_max        roving_map1_name             &lt;br /&gt;
  cartoon_putty_scale_min        roving_map2_level            &lt;br /&gt;
  cartoon_putty_scale_power      roving_map2_name             &lt;br /&gt;
  cartoon_rect_length            roving_map3_level            &lt;br /&gt;
  cartoon_rect_width             roving_map3_name             &lt;br /&gt;
  cartoon_refine                 roving_nb_spheres            &lt;br /&gt;
  cartoon_refine_normals         roving_nonbonded             &lt;br /&gt;
  cartoon_refine_tips            roving_origin                &lt;br /&gt;
  cartoon_ring_color             roving_origin_z              &lt;br /&gt;
  cartoon_ring_finder            roving_origin_z_cushion      &lt;br /&gt;
  [[cartoon_ring_mode]]              roving_polar_contacts        &lt;br /&gt;
  cartoon_ring_radius            roving_polar_cutoff          &lt;br /&gt;
  [[cartoon_ring_transparency]]      roving_ribbon                &lt;br /&gt;
  cartoon_ring_width             roving_selection             &lt;br /&gt;
  [[cartoon_round_helices]]          roving_spheres               &lt;br /&gt;
  [[cartoon_sampling]]               roving_sticks                &lt;br /&gt;
  cartoon_side_chain_helper      scene_animation              &lt;br /&gt;
  cartoon_smooth_cycles          scene_animation_duration     &lt;br /&gt;
  cartoon_smooth_first           scene_current_name           &lt;br /&gt;
  cartoon_smooth_last            scene_loop                   &lt;br /&gt;
  [[cartoon_smooth_loops]]           scene_restart_movie_delay    &lt;br /&gt;
  cartoon_throw                  scenes_changed               &lt;br /&gt;
  cartoon_trace_atoms            sculpt_angl_weight           &lt;br /&gt;
  [[cartoon_transparency]]           sculpt_auto_center           &lt;br /&gt;
  cartoon_tube_cap               sculpt_avd_excl              &lt;br /&gt;
  cartoon_tube_quality           sculpt_avd_gap               &lt;br /&gt;
  cartoon_tube_radius            sculpt_avd_range             &lt;br /&gt;
  cavity_cull                    sculpt_avd_weight            &lt;br /&gt;
  cgo_dot_radius                 sculpt_bond_weight           &lt;br /&gt;
  cgo_dot_width                  sculpt_field_mask            &lt;br /&gt;
  cgo_line_radius                sculpt_hb_overlap            &lt;br /&gt;
  cgo_line_width                 sculpt_hb_overlap_base       &lt;br /&gt;
  cgo_ray_width_scale            sculpt_line_weight           &lt;br /&gt;
  cgo_sphere_quality             sculpt_max_max               &lt;br /&gt;
  cgo_transparency               sculpt_max_min               &lt;br /&gt;
  clamp_colors                   sculpt_max_scale             &lt;br /&gt;
  connect_bonded                 sculpt_max_weight            &lt;br /&gt;
  connect_cutoff                 sculpt_memory                &lt;br /&gt;
  connect_mode                   sculpt_min_max               &lt;br /&gt;
  coulomb_cutoff                 sculpt_min_min               &lt;br /&gt;
  coulomb_dielectric             sculpt_min_scale             &lt;br /&gt;
  coulomb_units_factor           sculpt_min_weight            &lt;br /&gt;
  cull_spheres                   sculpt_nb_interval           &lt;br /&gt;
  [[Dash_Gap]]                       sculpt_plan_weight           &lt;br /&gt;
  [[Dash_Length]]                    sculpt_pyra_weight           &lt;br /&gt;
  [[Dash_Radius]]                    sculpt_tors_tolerance        &lt;br /&gt;
  [[Dash_Round_Ends]]                sculpt_tors_weight           &lt;br /&gt;
  dash_width                     sculpt_tri_max               &lt;br /&gt;
  debug_pick                     sculpt_tri_min               &lt;br /&gt;
  defer_builds_mode              sculpt_tri_mode              &lt;br /&gt;
  defer_updates                  sculpt_tri_scale             &lt;br /&gt;
  depth_cue                      sculpt_tri_weight            &lt;br /&gt;
  dihedral_label_position        sculpt_vdw_scale             &lt;br /&gt;
  dihedral_size                  sculpt_vdw_scale14           &lt;br /&gt;
  direct                         sculpt_vdw_vis_max           &lt;br /&gt;
  dist_counter                   sculpt_vdw_vis_mid           &lt;br /&gt;
  distance_exclusion             sculpt_vdw_vis_min           &lt;br /&gt;
  dot_color                      sculpt_vdw_vis_mode          &lt;br /&gt;
  dot_density                    sculpt_vdw_weight            &lt;br /&gt;
  dot_hydrogens                  sculpt_vdw_weight14          &lt;br /&gt;
  dot_lighting                   sculpting                    &lt;br /&gt;
  dot_mode                       sculpting_cycles             &lt;br /&gt;
  dot_normals                    secondary_structure          &lt;br /&gt;
  dot_radius                     security                     &lt;br /&gt;
  dot_solvent                    sel_counter&lt;br /&gt;
  [[dot_width]]                      selection_overlay            &lt;br /&gt;
  draw_frames                    selection_round_points       &lt;br /&gt;
  editor_auto_dihedral           selection_visible_only       &lt;br /&gt;
  editor_auto_origin             [[selection_width]]              &lt;br /&gt;
  editor_label_fragments         selection_width_max          &lt;br /&gt;
  fast_idle                      selection_width_scale        &lt;br /&gt;
  fetch_path                     [[seq_view]]                     &lt;br /&gt;
  [[Field_Of_View]]                  seq_view_alignment           &lt;br /&gt;
  fit_iterations                 seq_view_color               &lt;br /&gt;
  fit_tolerance                  seq_view_discrete_by_state   &lt;br /&gt;
  float_labels                   seq_view_fill_char           &lt;br /&gt;
  fog                            seq_view_fill_color          &lt;br /&gt;
  fog_start                      seq_view_format              &lt;br /&gt;
  frame                          seq_view_label_color         &lt;br /&gt;
  full_screen                    seq_view_label_mode          &lt;br /&gt;
  gamma                          seq_view_label_spacing       &lt;br /&gt;
  gaussian_b_adjust              seq_view_label_start         &lt;br /&gt;
  gaussian_b_floor               [[seq_view_location]]            &lt;br /&gt;
  gaussian_resolution            seq_view_overlay             &lt;br /&gt;
  gl_ambient                     seq_view_unaligned_color     &lt;br /&gt;
  h_bond_cone                    seq_view_unaligned_mode      &lt;br /&gt;
  h_bond_cutoff_center           session_file                 &lt;br /&gt;
  h_bond_cutoff_edge             session_migration            &lt;br /&gt;
  h_bond_exclusion               session_version_check        &lt;br /&gt;
  h_bond_max_angle               shininess                    &lt;br /&gt;
  h_bond_power_a                 show_alpha_checker           &lt;br /&gt;
  h_bond_power_b                 show_progress                &lt;br /&gt;
  [[half_bonds]]                     simplify_display_lists       &lt;br /&gt;
  hash_max                       single_image                 &lt;br /&gt;
  hide_underscore_names          slice_dynamic_grid           &lt;br /&gt;
  idle_delay                     slice_dynamic_grid_resolution&lt;br /&gt;
  ignore_case                    slice_grid                   &lt;br /&gt;
  ignore_pdb_segi                slice_height_map             &lt;br /&gt;
  image_dots_per_inch            slice_height_scale           &lt;br /&gt;
  internal_feedback              slice_track_camera           &lt;br /&gt;
  [[Internal Gui|internal_gui]]                   slow_idle                    &lt;br /&gt;
  internal_gui_control_size      smooth_color_triangle        &lt;br /&gt;
  internal_gui_mode              solvent_radius               &lt;br /&gt;
  internal_gui_width             spec_count                   &lt;br /&gt;
  [[internal_prompt]]                spec_direct                  &lt;br /&gt;
  isomesh_auto_state             spec_direct_power            &lt;br /&gt;
  [[label_color]]                    spec_power                   &lt;br /&gt;
  [[Label_font_id]]                  [[spec_reflect]]                 &lt;br /&gt;
  [[Label_outline_color]]            specular                     &lt;br /&gt;
  label_position                 specular_intensity           &lt;br /&gt;
  [[label_shadow_mode]]              [[sphere_color]]                 &lt;br /&gt;
  [[label_size]]                     sphere_mode                  &lt;br /&gt;
  legacy_mouse_zoom              sphere_point_max_size        &lt;br /&gt;
  legacy_vdw_radii               sphere_point_size            &lt;br /&gt;
  light                          sphere_quality               &lt;br /&gt;
  light2                         [[sphere_scale]]                 &lt;br /&gt;
  light3                         sphere_solvent               &lt;br /&gt;
  light4                         sphere_transparency          &lt;br /&gt;
  light5                         spheroid_fill                &lt;br /&gt;
  light6                         spheroid_scale               &lt;br /&gt;
  light7                         spheroid_smooth              &lt;br /&gt;
  light8                         ss_helix_phi_exclude         &lt;br /&gt;
  light9                         ss_helix_phi_include         &lt;br /&gt;
  light_count                    ss_helix_phi_target          &lt;br /&gt;
  line_radius                    ss_helix_psi_exclude         &lt;br /&gt;
  [[line_smooth]]                   ss_helix_psi_include         &lt;br /&gt;
  line_stick_helper              ss_helix_psi_target          &lt;br /&gt;
  line_width                     ss_strand_phi_exclude        &lt;br /&gt;
  log_box_selections             ss_strand_phi_include        &lt;br /&gt;
  log_conformations              ss_strand_phi_target         &lt;br /&gt;
  logging                        ss_strand_psi_exclude        &lt;br /&gt;
  matrix_mode                    ss_strand_psi_include        &lt;br /&gt;
  max_threads                    ss_strand_psi_target         &lt;br /&gt;
  max_triangles                  state                        &lt;br /&gt;
  mesh_color                     static_singletons            &lt;br /&gt;
  mesh_lighting                  stereo                       &lt;br /&gt;
  mesh_mode                      stereo_angle                 &lt;br /&gt;
  mesh_normals                   stereo_double_pump_mono      &lt;br /&gt;
  mesh_quality                   stereo_mode                  &lt;br /&gt;
  mesh_radius                    stereo_shift                 &lt;br /&gt;
  mesh_solvent                   [[stick_ball]]                   &lt;br /&gt;
  mesh_type                      [[stick_ball_ratio]]             &lt;br /&gt;
  mesh_width                     stick_color                  &lt;br /&gt;
  min_mesh_spacing               stick_fixed_radius           &lt;br /&gt;
  mouse_limit                    [[stick_nub]]                    &lt;br /&gt;
  mouse_restart_movie_delay      stick_overlap                &lt;br /&gt;
  mouse_scale                    stick_quality                &lt;br /&gt;
  mouse_selection_mode           stick_radius                 &lt;br /&gt;
  movie_delay                    stick_transparency           &lt;br /&gt;
  movie_loop                     stick_valence_scale          &lt;br /&gt;
  multiplex                      stop_on_exceptions           &lt;br /&gt;
  no_idle                        surface_best                 &lt;br /&gt;
  nonbonded_size                 surface_carve_cutoff         &lt;br /&gt;
  normal_workaround              surface_carve_selection      &lt;br /&gt;
  normalize_ccp4_maps            surface_carve_state          &lt;br /&gt;
  normalize_grd_maps             surface_circumscribe         &lt;br /&gt;
  normalize_o_maps               surface_clear_cutoff         &lt;br /&gt;
  nvidia_bugs                    surface_clear_selection      &lt;br /&gt;
  opaque_background              surface_clear_state          &lt;br /&gt;
  [[orthoscopic]]                    surface_color                &lt;br /&gt;
  overlay                        surface_debug                &lt;br /&gt;
  overlay_lines                  surface_miserable            &lt;br /&gt;
  pdb_conect_all                 surface_mode                 &lt;br /&gt;
  pdb_discrete_chains            surface_normal               &lt;br /&gt;
  pdb_echo_tags                  surface_optimize_subsets     &lt;br /&gt;
  pdb_hetatm_sort                surface_poor                 &lt;br /&gt;
  pdb_honor_model_number         surface_proximity            &lt;br /&gt;
  pdb_insertions_go_first        surface_quality              &lt;br /&gt;
  pdb_insure_orthogonal          surface_ramp_above_mode      &lt;br /&gt;
  pdb_literal_names              surface_solvent              &lt;br /&gt;
  pdb_no_end_record              surface_trim_cutoff          &lt;br /&gt;
  pdb_reformat_names_mode        surface_trim_factor          &lt;br /&gt;
  pdb_retain_ids                 surface_type                 &lt;br /&gt;
  pdb_standard_order             suspend_updates              &lt;br /&gt;
  pdb_truncate_residue_name      swap_dsn6_bytes              &lt;br /&gt;
  pdb_unbond_cations             sweep_angle                  &lt;br /&gt;
  pdb_use_ter_records            sweep_mode                   &lt;br /&gt;
  [[pickable]]                       sweep_phase                  &lt;br /&gt;
  png_file_gamma                 sweep_speed                  &lt;br /&gt;
  png_screen_gamma               test1                        &lt;br /&gt;
  power                          test2                        &lt;br /&gt;
  pqr_no_chain_id                text                         &lt;br /&gt;
  presentation                   texture_fonts                &lt;br /&gt;
  presentation_auto_quit         [[transparency]]                 &lt;br /&gt;
  presentation_auto_start        transparency_mode            &lt;br /&gt;
  presentation_mode              transparency_picking_mode    &lt;br /&gt;
  preserve_chempy_ids            triangle_max_passes          &lt;br /&gt;
  pymol_space_max_blue           trim_dots                    &lt;br /&gt;
  pymol_space_max_green          [[two_sided_lighting]]&lt;br /&gt;
  pymol_space_max_red            use_display_lists            &lt;br /&gt;
  pymol_space_min_factor         [[valence]]                      &lt;br /&gt;
  raise_exceptions               valence_default              &lt;br /&gt;
  rank_assisted_sorts            valence_size                 &lt;br /&gt;
  ray_blend_blue                 validate_object_names        &lt;br /&gt;
  ray_blend_colors               virtual_trackball            &lt;br /&gt;
  ray_blend_green                wildcard                     &lt;br /&gt;
  ray_blend_red                  wizard_prompt_mode           &lt;br /&gt;
  ray_color_ramps                wrap_output                  &lt;br /&gt;
&lt;br /&gt;
[[Category:Settings|All Settings]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=12932</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=12932"/>
		<updated>2006-09-23T02:39:39Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', 1, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Talk:Plane_Wizard&amp;diff=110</id>
		<title>Talk:Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Talk:Plane_Wizard&amp;diff=110"/>
		<updated>2006-09-23T02:39:11Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
I tried this out - it's pretty neat - good job!&lt;br /&gt;
&lt;br /&gt;
Two minor comments:&lt;br /&gt;
     - any plane created goes away when exiting the wizard.  Is this intended?&lt;br /&gt;
     - I found a typo in the code (spacing) on line 112 &amp;amp; corrected it&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ribbon_color&amp;diff=9488</id>
		<title>Ribbon color</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ribbon_color&amp;diff=9488"/>
		<updated>2006-09-17T22:09:09Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
ribbon_color allows one to explicitly state the color to be applied to a ribbon object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, marine           (default auto-cycles the color for each new object)&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, green /obj01     (apply green to the ribbon only for object obj01)&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, orange /obj01//B (apply orange to the ribbon only for chain B of object obj01; NB: not fully enabled until version 1.0)&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:ribbon_color_green.png|ribbon_color green&lt;br /&gt;
Image:ribbon_color_marine.png|ribbon_color marine&lt;br /&gt;
Image:ribbon_color_chains.png|two chains in same object with different colors&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Advanced details==&lt;br /&gt;
&lt;br /&gt;
Some notes on general &amp;quot;set&amp;quot; syntax (From PyMOL &amp;quot;help set&amp;quot;):&lt;br /&gt;
 &lt;br /&gt;
DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
   &amp;quot;set&amp;quot; changes one of the PyMOL state variables,&lt;br /&gt;
 &lt;br /&gt;
USAGE&lt;br /&gt;
 &lt;br /&gt;
   set name, [,value [,object-or-selection [,state ]]]&lt;br /&gt;
 &lt;br /&gt;
   set name = value  # (DEPRECATED)&lt;br /&gt;
 &lt;br /&gt;
PYMOL API&lt;br /&gt;
 &lt;br /&gt;
   cmd.set ( string name, string value=1,&lt;br /&gt;
             string selection='', int state=0,&lt;br /&gt;
              int updates=1, quiet=1)&lt;br /&gt;
 &lt;br /&gt;
NOTES&lt;br /&gt;
 &lt;br /&gt;
   The default behavior (with a blank selection) changes the global&lt;br /&gt;
   settings database.  If the selection is 'all', then the settings&lt;br /&gt;
   database in all individual objects will be changed.  Likewise, for&lt;br /&gt;
   a given object, if state is zero, then the object database will be&lt;br /&gt;
   modified.  Otherwise, the settings database for the indicated state&lt;br /&gt;
   within the object will be modified.&lt;br /&gt;
 &lt;br /&gt;
   If a selection is provided, then all objects in the selection will&lt;br /&gt;
   be affected.&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Ribbon_color_chains.png&amp;diff=2016</id>
		<title>File:Ribbon color chains.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Ribbon_color_chains.png&amp;diff=2016"/>
		<updated>2006-09-17T22:08:10Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ribbon_color&amp;diff=9487</id>
		<title>Ribbon color</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ribbon_color&amp;diff=9487"/>
		<updated>2006-09-17T21:51:34Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
ribbon_color allows one to explicitly state the color to be applied to a ribbon object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, marine           (default auto-cycles the color for each new object)&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, green /obj01     (apply green to the ribbon only for object obj01)&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, orange /obj01//B (apply orange to the ribbon only for chain B of object obj01; NB: not fully enabled until version 1.0)&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:ribbon_color_green.png|ribbon_color green&lt;br /&gt;
Image:ribbon_color_marine.png|ribbon_color marine&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Advanced details==&lt;br /&gt;
&lt;br /&gt;
Some notes on general &amp;quot;set&amp;quot; syntax (From PyMOL &amp;quot;help set&amp;quot;):&lt;br /&gt;
 &lt;br /&gt;
DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
   &amp;quot;set&amp;quot; changes one of the PyMOL state variables,&lt;br /&gt;
 &lt;br /&gt;
USAGE&lt;br /&gt;
 &lt;br /&gt;
   set name, [,value [,object-or-selection [,state ]]]&lt;br /&gt;
 &lt;br /&gt;
   set name = value  # (DEPRECATED)&lt;br /&gt;
 &lt;br /&gt;
PYMOL API&lt;br /&gt;
 &lt;br /&gt;
   cmd.set ( string name, string value=1,&lt;br /&gt;
             string selection='', int state=0,&lt;br /&gt;
              int updates=1, quiet=1)&lt;br /&gt;
 &lt;br /&gt;
NOTES&lt;br /&gt;
 &lt;br /&gt;
   The default behavior (with a blank selection) changes the global&lt;br /&gt;
   settings database.  If the selection is 'all', then the settings&lt;br /&gt;
   database in all individual objects will be changed.  Likewise, for&lt;br /&gt;
   a given object, if state is zero, then the object database will be&lt;br /&gt;
   modified.  Otherwise, the settings database for the indicated state&lt;br /&gt;
   within the object will be modified.&lt;br /&gt;
 &lt;br /&gt;
   If a selection is provided, then all objects in the selection will&lt;br /&gt;
   be affected.&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ribbon_color&amp;diff=9486</id>
		<title>Ribbon color</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ribbon_color&amp;diff=9486"/>
		<updated>2006-09-16T17:31:37Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
ribbon_color allows one to explicitly state the color to be applied to a ribbon object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, marine           (default auto-cycles the color for each new object)&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, green /obj01     (apply green to the ribbon only for object obj01)&lt;br /&gt;
&lt;br /&gt;
set ribbon_color, orange /obj01//B (apply orange to the ribbon only for chain B of object obj01)&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:ribbon_color_green.png|ribbon_color green&lt;br /&gt;
Image:ribbon_color_marine.png|ribbon_color marine&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Advanced details==&lt;br /&gt;
&lt;br /&gt;
Some notes on general &amp;quot;set&amp;quot; syntax (From PyMOL &amp;quot;help set&amp;quot;):&lt;br /&gt;
 &lt;br /&gt;
DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
   &amp;quot;set&amp;quot; changes one of the PyMOL state variables,&lt;br /&gt;
 &lt;br /&gt;
USAGE&lt;br /&gt;
 &lt;br /&gt;
   set name, [,value [,object-or-selection [,state ]]]&lt;br /&gt;
 &lt;br /&gt;
   set name = value  # (DEPRECATED)&lt;br /&gt;
 &lt;br /&gt;
PYMOL API&lt;br /&gt;
 &lt;br /&gt;
   cmd.set ( string name, string value=1,&lt;br /&gt;
             string selection='', int state=0,&lt;br /&gt;
              int updates=1, quiet=1)&lt;br /&gt;
 &lt;br /&gt;
NOTES&lt;br /&gt;
 &lt;br /&gt;
   The default behavior (with a blank selection) changes the global&lt;br /&gt;
   settings database.  If the selection is 'all', then the settings&lt;br /&gt;
   database in all individual objects will be changed.  Likewise, for&lt;br /&gt;
   a given object, if state is zero, then the object database will be&lt;br /&gt;
   modified.  Otherwise, the settings database for the indicated state&lt;br /&gt;
   within the object will be modified.&lt;br /&gt;
 &lt;br /&gt;
   If a selection is provided, then all objects in the selection will&lt;br /&gt;
   be affected.&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Ribbon_color_marine.png&amp;diff=2018</id>
		<title>File:Ribbon color marine.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Ribbon_color_marine.png&amp;diff=2018"/>
		<updated>2006-09-16T17:21:21Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Ribbon_color_green.png&amp;diff=2503</id>
		<title>File:Ribbon color green.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Ribbon_color_green.png&amp;diff=2503"/>
		<updated>2006-09-16T17:20:57Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Ribbon_color_default.png&amp;diff=2260</id>
		<title>File:Ribbon color default.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Ribbon_color_default.png&amp;diff=2260"/>
		<updated>2006-09-16T17:18:00Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Settings&amp;diff=10116</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Settings&amp;diff=10116"/>
		<updated>2006-09-16T17:12:04Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the PyMol settings.  If you feel like documenting them, and what they do, feel free.  42 done, 476 to go !&lt;br /&gt;
&lt;br /&gt;
  active_selections              ray_default_renderer         &lt;br /&gt;
  [[all_states]]                     ray_direct_shade             &lt;br /&gt;
  ambient                        ray_hint_camera              &lt;br /&gt;
  angle_label_position           ray_hint_shadow              &lt;br /&gt;
  angle_size                     ray_improve_shadows          &lt;br /&gt;
  animation                      ray_interior_color           &lt;br /&gt;
  animation_duration             ray_interior_mode            &lt;br /&gt;
  [[antialias]]                      ray_interior_reflect         &lt;br /&gt;
  async_builds                   ray_interior_shadows         &lt;br /&gt;
  atom_name_wildcard             ray_interior_texture         &lt;br /&gt;
  auto_classify_atoms            ray_legacy_lighting          &lt;br /&gt;
  auto_color                     ray_max_passes               &lt;br /&gt;
  auto_dss                       [[ray_opaque_background]]       &lt;br /&gt;
  auto_hide_selections           [[ray_orthoscopic]]              &lt;br /&gt;
  auto_indicate_flags            ray_oversample_cutoff        &lt;br /&gt;
  auto_number_selections         ray_pixel_scale              &lt;br /&gt;
  auto_remove_hydrogens          [[ray_shadow]]                   &lt;br /&gt;
  auto_sculpt                    ray_shadow_decay_factor      &lt;br /&gt;
  auto_show_lines                ray_shadow_decay_range       &lt;br /&gt;
  auto_show_nonbonded            ray_shadow_fudge             &lt;br /&gt;
  auto_show_selections           [[ray_shadows]]                  &lt;br /&gt;
  auto_show_spheres              ray_texture                  &lt;br /&gt;
  [[auto_zoom]]                      ray_texture_settings         &lt;br /&gt;
  [[backface_cull]]                  ray_trace_depth_factor       &lt;br /&gt;
  batch_prefix                   ray_trace_disco_factor       &lt;br /&gt;
  [[bg_rgb]]                         [[ray_trace_fog]]                &lt;br /&gt;
  bonding_vdw_cutoff             ray_trace_fog_start          &lt;br /&gt;
  button_mode                    [[ray_trace_frames]]            &lt;br /&gt;
  button_mode_name               ray_trace_gain               &lt;br /&gt;
  cache_display                  ray_trace_mode               &lt;br /&gt;
  cache_frames                   ray_trace_slope_factor       &lt;br /&gt;
  cache_memory                   ray_transparency_contrast    &lt;br /&gt;
  [[cartoon_color]]                  ray_transparency_shadows     &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_cylindrical_helices]]    ray_transparency_spec_cut    &lt;br /&gt;
  cartoon_debug                  ray_transparency_specular    &lt;br /&gt;
  [[cartoon_discrete_colors]]        ray_triangle_fudge           &lt;br /&gt;
  cartoon_dumbbell_length        reflect                      &lt;br /&gt;
  cartoon_dumbbell_radius        reflect_power                &lt;br /&gt;
  cartoon_dumbbell_width         retain_order                 &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_fancy_helices]]          [[ribbon_color]]                 &lt;br /&gt;
  [[cartoon_fancy_sheets]]           ribbon_nucleic_acid_mode     &lt;br /&gt;
  cartoon_flat_cycles            ribbon_power                 &lt;br /&gt;
  cartoon_flat_sheets            ribbon_power_b               &lt;br /&gt;
  cartoon_helix_radius           ribbon_radius                &lt;br /&gt;
  [[cartoon_highlight_color]]        [[ribbon_sampling]]              &lt;br /&gt;
  cartoon_ladder_color           ribbon_side_chain_helper     &lt;br /&gt;
  cartoon_ladder_mode            ribbon_smooth                &lt;br /&gt;
  cartoon_ladder_radius          ribbon_throw                 &lt;br /&gt;
  cartoon_loop_cap               ribbon_trace_atoms           &lt;br /&gt;
  cartoon_loop_quality           [[ribbon_width]]                 &lt;br /&gt;
  cartoon_loop_radius            robust_logs                  &lt;br /&gt;
  [[cartoon_nucleic_acid_color]]     rock_delay                   &lt;br /&gt;
  [[cartoon_nucleic_acid_mode]]      roving_byres                 &lt;br /&gt;
  cartoon_oval_length            roving_cartoon               &lt;br /&gt;
  cartoon_oval_quality           roving_delay                 &lt;br /&gt;
  cartoon_oval_width             roving_detail                &lt;br /&gt;
  cartoon_power                  roving_isomesh               &lt;br /&gt;
  cartoon_power_b                roving_isosurface            &lt;br /&gt;
  cartoon_putty_quality          roving_labels                &lt;br /&gt;
  cartoon_putty_radius           roving_lines                 &lt;br /&gt;
  cartoon_putty_range            roving_map1_level            &lt;br /&gt;
  cartoon_putty_scale_max        roving_map1_name             &lt;br /&gt;
  cartoon_putty_scale_min        roving_map2_level            &lt;br /&gt;
  cartoon_putty_scale_power      roving_map2_name             &lt;br /&gt;
  cartoon_rect_length            roving_map3_level            &lt;br /&gt;
  cartoon_rect_width             roving_map3_name             &lt;br /&gt;
  cartoon_refine                 roving_nb_spheres            &lt;br /&gt;
  cartoon_refine_normals         roving_nonbonded             &lt;br /&gt;
  cartoon_refine_tips            roving_origin                &lt;br /&gt;
  cartoon_ring_color             roving_origin_z              &lt;br /&gt;
  cartoon_ring_finder            roving_origin_z_cushion      &lt;br /&gt;
  [[cartoon_ring_mode]]              roving_polar_contacts        &lt;br /&gt;
  cartoon_ring_radius            roving_polar_cutoff          &lt;br /&gt;
  [[cartoon_ring_transparency]]      roving_ribbon                &lt;br /&gt;
  cartoon_ring_width             roving_selection             &lt;br /&gt;
  [[cartoon_round_helices]]          roving_spheres               &lt;br /&gt;
  [[cartoon_sampling]]               roving_sticks                &lt;br /&gt;
  cartoon_side_chain_helper      scene_animation              &lt;br /&gt;
  cartoon_smooth_cycles          scene_animation_duration     &lt;br /&gt;
  cartoon_smooth_first           scene_current_name           &lt;br /&gt;
  cartoon_smooth_last            scene_loop                   &lt;br /&gt;
  [[cartoon_smooth_loops]]           scene_restart_movie_delay    &lt;br /&gt;
  cartoon_throw                  scenes_changed               &lt;br /&gt;
  cartoon_trace_atoms            sculpt_angl_weight           &lt;br /&gt;
  [[cartoon_transparency]]           sculpt_auto_center           &lt;br /&gt;
  cartoon_tube_cap               sculpt_avd_excl              &lt;br /&gt;
  cartoon_tube_quality           sculpt_avd_gap               &lt;br /&gt;
  cartoon_tube_radius            sculpt_avd_range             &lt;br /&gt;
  cavity_cull                    sculpt_avd_weight            &lt;br /&gt;
  cgo_dot_radius                 sculpt_bond_weight           &lt;br /&gt;
  cgo_dot_width                  sculpt_field_mask            &lt;br /&gt;
  cgo_line_radius                sculpt_hb_overlap            &lt;br /&gt;
  cgo_line_width                 sculpt_hb_overlap_base       &lt;br /&gt;
  cgo_ray_width_scale            sculpt_line_weight           &lt;br /&gt;
  cgo_sphere_quality             sculpt_max_max               &lt;br /&gt;
  cgo_transparency               sculpt_max_min               &lt;br /&gt;
  clamp_colors                   sculpt_max_scale             &lt;br /&gt;
  connect_bonded                 sculpt_max_weight            &lt;br /&gt;
  connect_cutoff                 sculpt_memory                &lt;br /&gt;
  connect_mode                   sculpt_min_max               &lt;br /&gt;
  coulomb_cutoff                 sculpt_min_min               &lt;br /&gt;
  coulomb_dielectric             sculpt_min_scale             &lt;br /&gt;
  coulomb_units_factor           sculpt_min_weight            &lt;br /&gt;
  cull_spheres                   sculpt_nb_interval           &lt;br /&gt;
  [[Dash_Gap]]                       sculpt_plan_weight           &lt;br /&gt;
  [[Dash_Length]]                    sculpt_pyra_weight           &lt;br /&gt;
  [[Dash_Radius]]                    sculpt_tors_tolerance        &lt;br /&gt;
  [[Dash_Round_Ends]]                sculpt_tors_weight           &lt;br /&gt;
  dash_width                     sculpt_tri_max               &lt;br /&gt;
  debug_pick                     sculpt_tri_min               &lt;br /&gt;
  defer_builds_mode              sculpt_tri_mode              &lt;br /&gt;
  defer_updates                  sculpt_tri_scale             &lt;br /&gt;
  depth_cue                      sculpt_tri_weight            &lt;br /&gt;
  dihedral_label_position        sculpt_vdw_scale             &lt;br /&gt;
  dihedral_size                  sculpt_vdw_scale14           &lt;br /&gt;
  direct                         sculpt_vdw_vis_max           &lt;br /&gt;
  dist_counter                   sculpt_vdw_vis_mid           &lt;br /&gt;
  distance_exclusion             sculpt_vdw_vis_min           &lt;br /&gt;
  dot_color                      sculpt_vdw_vis_mode          &lt;br /&gt;
  dot_density                    sculpt_vdw_weight            &lt;br /&gt;
  dot_hydrogens                  sculpt_vdw_weight14          &lt;br /&gt;
  dot_lighting                   sculpting                    &lt;br /&gt;
  dot_mode                       sculpting_cycles             &lt;br /&gt;
  dot_normals                    secondary_structure          &lt;br /&gt;
  dot_radius                     security                     &lt;br /&gt;
  dot_solvent                    sel_counter&lt;br /&gt;
  [[dot_width]]                      selection_overlay            &lt;br /&gt;
  draw_frames                    selection_round_points       &lt;br /&gt;
  editor_auto_dihedral           selection_visible_only       &lt;br /&gt;
  editor_auto_origin             [[selection_width]]              &lt;br /&gt;
  editor_label_fragments         selection_width_max          &lt;br /&gt;
  fast_idle                      selection_width_scale        &lt;br /&gt;
  fetch_path                     [[seq_view]]                     &lt;br /&gt;
  [[Field_Of_View]]                  seq_view_alignment           &lt;br /&gt;
  fit_iterations                 seq_view_color               &lt;br /&gt;
  fit_tolerance                  seq_view_discrete_by_state   &lt;br /&gt;
  float_labels                   seq_view_fill_char           &lt;br /&gt;
  fog                            seq_view_fill_color          &lt;br /&gt;
  fog_start                      seq_view_format              &lt;br /&gt;
  frame                          seq_view_label_color         &lt;br /&gt;
  full_screen                    seq_view_label_mode          &lt;br /&gt;
  gamma                          seq_view_label_spacing       &lt;br /&gt;
  gaussian_b_adjust              seq_view_label_start         &lt;br /&gt;
  gaussian_b_floor               [[seq_view_location]]            &lt;br /&gt;
  gaussian_resolution            seq_view_overlay             &lt;br /&gt;
  gl_ambient                     seq_view_unaligned_color     &lt;br /&gt;
  h_bond_cone                    seq_view_unaligned_mode      &lt;br /&gt;
  h_bond_cutoff_center           session_file                 &lt;br /&gt;
  h_bond_cutoff_edge             session_migration            &lt;br /&gt;
  h_bond_exclusion               session_version_check        &lt;br /&gt;
  h_bond_max_angle               shininess                    &lt;br /&gt;
  h_bond_power_a                 show_alpha_checker           &lt;br /&gt;
  h_bond_power_b                 show_progress                &lt;br /&gt;
  [[half_bonds]]                     simplify_display_lists       &lt;br /&gt;
  hash_max                       single_image                 &lt;br /&gt;
  hide_underscore_names          slice_dynamic_grid           &lt;br /&gt;
  idle_delay                     slice_dynamic_grid_resolution&lt;br /&gt;
  ignore_case                    slice_grid                   &lt;br /&gt;
  ignore_pdb_segi                slice_height_map             &lt;br /&gt;
  image_dots_per_inch            slice_height_scale           &lt;br /&gt;
  internal_feedback              slice_track_camera           &lt;br /&gt;
  [[Internal Gui|internal_gui]]                   slow_idle                    &lt;br /&gt;
  internal_gui_control_size      smooth_color_triangle        &lt;br /&gt;
  internal_gui_mode              solvent_radius               &lt;br /&gt;
  internal_gui_width             spec_count                   &lt;br /&gt;
  [[internal_prompt]]                spec_direct                  &lt;br /&gt;
  isomesh_auto_state             spec_direct_power            &lt;br /&gt;
  [[label_color]]                    spec_power                   &lt;br /&gt;
  [[Label_font_id]]                  [[spec_reflect]]                 &lt;br /&gt;
  [[Label_outline_color]]            specular                     &lt;br /&gt;
  label_position                 specular_intensity           &lt;br /&gt;
  [[label_shadow_mode]]              [[sphere_color]]                 &lt;br /&gt;
  [[label_size]]                     sphere_mode                  &lt;br /&gt;
  legacy_mouse_zoom              sphere_point_max_size        &lt;br /&gt;
  legacy_vdw_radii               sphere_point_size            &lt;br /&gt;
  light                          sphere_quality               &lt;br /&gt;
  light2                         [[sphere_scale]]                 &lt;br /&gt;
  light3                         sphere_solvent               &lt;br /&gt;
  light4                         sphere_transparency          &lt;br /&gt;
  light5                         spheroid_fill                &lt;br /&gt;
  light6                         spheroid_scale               &lt;br /&gt;
  light7                         spheroid_smooth              &lt;br /&gt;
  light8                         ss_helix_phi_exclude         &lt;br /&gt;
  light9                         ss_helix_phi_include         &lt;br /&gt;
  light_count                    ss_helix_phi_target          &lt;br /&gt;
  line_radius                    ss_helix_psi_exclude         &lt;br /&gt;
  [[line_smooth]]                   ss_helix_psi_include         &lt;br /&gt;
  line_stick_helper              ss_helix_psi_target          &lt;br /&gt;
  line_width                     ss_strand_phi_exclude        &lt;br /&gt;
  log_box_selections             ss_strand_phi_include        &lt;br /&gt;
  log_conformations              ss_strand_phi_target         &lt;br /&gt;
  logging                        ss_strand_psi_exclude        &lt;br /&gt;
  matrix_mode                    ss_strand_psi_include        &lt;br /&gt;
  max_threads                    ss_strand_psi_target         &lt;br /&gt;
  max_triangles                  state                        &lt;br /&gt;
  mesh_color                     static_singletons            &lt;br /&gt;
  mesh_lighting                  stereo                       &lt;br /&gt;
  mesh_mode                      stereo_angle                 &lt;br /&gt;
  mesh_normals                   stereo_double_pump_mono      &lt;br /&gt;
  mesh_quality                   stereo_mode                  &lt;br /&gt;
  mesh_radius                    stereo_shift                 &lt;br /&gt;
  mesh_solvent                   stick_ball                   &lt;br /&gt;
  mesh_type                      stick_ball_ratio             &lt;br /&gt;
  mesh_width                     stick_color                  &lt;br /&gt;
  min_mesh_spacing               stick_fixed_radius           &lt;br /&gt;
  mouse_limit                    [[stick_nub]]                    &lt;br /&gt;
  mouse_restart_movie_delay      stick_overlap                &lt;br /&gt;
  mouse_scale                    stick_quality                &lt;br /&gt;
  mouse_selection_mode           stick_radius                 &lt;br /&gt;
  movie_delay                    stick_transparency           &lt;br /&gt;
  movie_loop                     stick_valence_scale          &lt;br /&gt;
  multiplex                      stop_on_exceptions           &lt;br /&gt;
  no_idle                        surface_best                 &lt;br /&gt;
  nonbonded_size                 surface_carve_cutoff         &lt;br /&gt;
  normal_workaround              surface_carve_selection      &lt;br /&gt;
  normalize_ccp4_maps            surface_carve_state          &lt;br /&gt;
  normalize_grd_maps             surface_circumscribe         &lt;br /&gt;
  normalize_o_maps               surface_clear_cutoff         &lt;br /&gt;
  nvidia_bugs                    surface_clear_selection      &lt;br /&gt;
  opaque_background              surface_clear_state          &lt;br /&gt;
  [[orthoscopic]]                    surface_color                &lt;br /&gt;
  overlay                        surface_debug                &lt;br /&gt;
  overlay_lines                  surface_miserable            &lt;br /&gt;
  pdb_conect_all                 surface_mode                 &lt;br /&gt;
  pdb_discrete_chains            surface_normal               &lt;br /&gt;
  pdb_echo_tags                  surface_optimize_subsets     &lt;br /&gt;
  pdb_hetatm_sort                surface_poor                 &lt;br /&gt;
  pdb_honor_model_number         surface_proximity            &lt;br /&gt;
  pdb_insertions_go_first        surface_quality              &lt;br /&gt;
  pdb_insure_orthogonal          surface_ramp_above_mode      &lt;br /&gt;
  pdb_literal_names              surface_solvent              &lt;br /&gt;
  pdb_no_end_record              surface_trim_cutoff          &lt;br /&gt;
  pdb_reformat_names_mode        surface_trim_factor          &lt;br /&gt;
  pdb_retain_ids                 surface_type                 &lt;br /&gt;
  pdb_standard_order             suspend_updates              &lt;br /&gt;
  pdb_truncate_residue_name      swap_dsn6_bytes              &lt;br /&gt;
  pdb_unbond_cations             sweep_angle                  &lt;br /&gt;
  pdb_use_ter_records            sweep_mode                   &lt;br /&gt;
  [[pickable]]                       sweep_phase                  &lt;br /&gt;
  png_file_gamma                 sweep_speed                  &lt;br /&gt;
  png_screen_gamma               test1                        &lt;br /&gt;
  power                          test2                        &lt;br /&gt;
  pqr_no_chain_id                text                         &lt;br /&gt;
  presentation                   texture_fonts                &lt;br /&gt;
  presentation_auto_quit         [[transparency]]                 &lt;br /&gt;
  presentation_auto_start        transparency_mode            &lt;br /&gt;
  presentation_mode              transparency_picking_mode    &lt;br /&gt;
  preserve_chempy_ids            triangle_max_passes          &lt;br /&gt;
  pymol_space_max_blue           trim_dots                    &lt;br /&gt;
  pymol_space_max_green          [[two_sided_lighting]]&lt;br /&gt;
  pymol_space_max_red            use_display_lists            &lt;br /&gt;
  pymol_space_min_factor         [[valence]]                      &lt;br /&gt;
  raise_exceptions               valence_default              &lt;br /&gt;
  rank_assisted_sorts            valence_size                 &lt;br /&gt;
  ray_blend_blue                 validate_object_names        &lt;br /&gt;
  ray_blend_colors               virtual_trackball            &lt;br /&gt;
  ray_blend_green                wildcard                     &lt;br /&gt;
  ray_blend_red                  wizard_prompt_mode           &lt;br /&gt;
  ray_color_ramps                wrap_output                  &lt;br /&gt;
&lt;br /&gt;
[[Category:Settings|All Settings]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Backface_cull&amp;diff=4236</id>
		<title>Backface cull</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Backface_cull&amp;diff=4236"/>
		<updated>2006-09-12T14:17:21Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
From the PyMOL source code: backface_cull &amp;quot;controls whether or not backward facing triangles are not filtered out when ray tracing&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set backface_cull, 1   (on; default)&lt;br /&gt;
&lt;br /&gt;
set backface_cull, 0   (off; allows the visualization of the &amp;quot;other side&amp;quot; (inside) of a surface)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that visualization of the inside of a surface also depends on the setting of &amp;quot;two_sided_lighting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cull_backface_on.jpg|cull_backface ON&lt;br /&gt;
Image:Cull_backface_off.jpg|cull_backface OFF&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Backface_cull&amp;diff=4235</id>
		<title>Backface cull</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Backface_cull&amp;diff=4235"/>
		<updated>2006-09-12T03:57:43Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
From the PyMOL source code: backface_cull &amp;quot;controls whether or not backward facing triangles are not filtered out when ray tracing&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set backface_cull, 1   (on; default)&lt;br /&gt;
&lt;br /&gt;
set backface_cull, 0   (off; allows the visualization of the &amp;quot;other side&amp;quot; (inside) of a surface)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cull_backface_on.jpg|cull_backface ON&lt;br /&gt;
Image:Cull_backface_off.jpg|cull_backface OFF&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Backface_cull&amp;diff=4234</id>
		<title>Backface cull</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Backface_cull&amp;diff=4234"/>
		<updated>2006-09-12T03:04:07Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
From the PyMOL source code: backface_cull &amp;quot;controls whether or not backward facing triangles are not filtered out when ray tracing&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set backface_cull, 1   (on; default)&lt;br /&gt;
set backface_cull, 0   (off; allows the visualization of the &amp;quot;other side&amp;quot; (inside) of a surface)&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cull_backface_on.jpg|cull_backface ON&lt;br /&gt;
Image:Cull_backface_off.jpg|cull_backface OFF&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Cull_backface_off.jpg&amp;diff=1493</id>
		<title>File:Cull backface off.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Cull_backface_off.jpg&amp;diff=1493"/>
		<updated>2006-09-12T03:03:06Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Cull_backface_on.jpg&amp;diff=1741</id>
		<title>File:Cull backface on.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Cull_backface_on.jpg&amp;diff=1741"/>
		<updated>2006-09-12T03:02:49Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Settings&amp;diff=10114</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Settings&amp;diff=10114"/>
		<updated>2006-09-12T02:48:06Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the PyMol settings.  If you feel like documenting them, and what they do, feel free.  42 done, 476 to go !&lt;br /&gt;
&lt;br /&gt;
  active_selections              ray_default_renderer         &lt;br /&gt;
  all_states                     ray_direct_shade             &lt;br /&gt;
  ambient                        ray_hint_camera              &lt;br /&gt;
  angle_label_position           ray_hint_shadow              &lt;br /&gt;
  angle_size                     ray_improve_shadows          &lt;br /&gt;
  animation                      ray_interior_color           &lt;br /&gt;
  animation_duration             ray_interior_mode            &lt;br /&gt;
  [[antialias]]                      ray_interior_reflect         &lt;br /&gt;
  async_builds                   ray_interior_shadows         &lt;br /&gt;
  atom_name_wildcard             ray_interior_texture         &lt;br /&gt;
  auto_classify_atoms            ray_legacy_lighting          &lt;br /&gt;
  auto_color                     ray_max_passes               &lt;br /&gt;
  auto_dss                       [[ray_opaque_background]]       &lt;br /&gt;
  auto_hide_selections           [[ray_orthoscopic]]              &lt;br /&gt;
  auto_indicate_flags            ray_oversample_cutoff        &lt;br /&gt;
  auto_number_selections         ray_pixel_scale              &lt;br /&gt;
  auto_remove_hydrogens          [[ray_shadow]]                   &lt;br /&gt;
  auto_sculpt                    ray_shadow_decay_factor      &lt;br /&gt;
  auto_show_lines                ray_shadow_decay_range       &lt;br /&gt;
  auto_show_nonbonded            ray_shadow_fudge             &lt;br /&gt;
  auto_show_selections           [[ray_shadows]]                  &lt;br /&gt;
  auto_show_spheres              ray_texture                  &lt;br /&gt;
  [[auto_zoom]]                      ray_texture_settings         &lt;br /&gt;
  [[backface_cull]]                  ray_trace_depth_factor       &lt;br /&gt;
  batch_prefix                   ray_trace_disco_factor       &lt;br /&gt;
  [[bg_rgb]]                         [[ray_trace_fog]]                &lt;br /&gt;
  bonding_vdw_cutoff             ray_trace_fog_start          &lt;br /&gt;
  button_mode                    [[ray_trace_frames]]            &lt;br /&gt;
  button_mode_name               ray_trace_gain               &lt;br /&gt;
  cache_display                  ray_trace_mode               &lt;br /&gt;
  cache_frames                   ray_trace_slope_factor       &lt;br /&gt;
  cache_memory                   ray_transparency_contrast    &lt;br /&gt;
  [[cartoon_color]]                  ray_transparency_shadows     &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_cylindrical_helices]]    ray_transparency_spec_cut    &lt;br /&gt;
  cartoon_debug                  ray_transparency_specular    &lt;br /&gt;
  [[cartoon_discrete_colors]]        ray_triangle_fudge           &lt;br /&gt;
  cartoon_dumbbell_length        reflect                      &lt;br /&gt;
  cartoon_dumbbell_radius        reflect_power                &lt;br /&gt;
  cartoon_dumbbell_width         retain_order                 &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_fancy_helices]]          ribbon_color                 &lt;br /&gt;
  [[cartoon_fancy_sheets]]           ribbon_nucleic_acid_mode     &lt;br /&gt;
  cartoon_flat_cycles            ribbon_power                 &lt;br /&gt;
  cartoon_flat_sheets            ribbon_power_b               &lt;br /&gt;
  cartoon_helix_radius           ribbon_radius                &lt;br /&gt;
  [[cartoon_highlight_color]]        [[ribbon_sampling]]              &lt;br /&gt;
  cartoon_ladder_color           ribbon_side_chain_helper     &lt;br /&gt;
  cartoon_ladder_mode            ribbon_smooth                &lt;br /&gt;
  cartoon_ladder_radius          ribbon_throw                 &lt;br /&gt;
  cartoon_loop_cap               ribbon_trace_atoms           &lt;br /&gt;
  cartoon_loop_quality           [[ribbon_width]]                 &lt;br /&gt;
  cartoon_loop_radius            robust_logs                  &lt;br /&gt;
  [[cartoon_nucleic_acid_color]]     rock_delay                   &lt;br /&gt;
  [[cartoon_nucleic_acid_mode]]      roving_byres                 &lt;br /&gt;
  cartoon_oval_length            roving_cartoon               &lt;br /&gt;
  cartoon_oval_quality           roving_delay                 &lt;br /&gt;
  cartoon_oval_width             roving_detail                &lt;br /&gt;
  cartoon_power                  roving_isomesh               &lt;br /&gt;
  cartoon_power_b                roving_isosurface            &lt;br /&gt;
  cartoon_putty_quality          roving_labels                &lt;br /&gt;
  cartoon_putty_radius           roving_lines                 &lt;br /&gt;
  cartoon_putty_range            roving_map1_level            &lt;br /&gt;
  cartoon_putty_scale_max        roving_map1_name             &lt;br /&gt;
  cartoon_putty_scale_min        roving_map2_level            &lt;br /&gt;
  cartoon_putty_scale_power      roving_map2_name             &lt;br /&gt;
  cartoon_rect_length            roving_map3_level            &lt;br /&gt;
  cartoon_rect_width             roving_map3_name             &lt;br /&gt;
  cartoon_refine                 roving_nb_spheres            &lt;br /&gt;
  cartoon_refine_normals         roving_nonbonded             &lt;br /&gt;
  cartoon_refine_tips            roving_origin                &lt;br /&gt;
  cartoon_ring_color             roving_origin_z              &lt;br /&gt;
  cartoon_ring_finder            roving_origin_z_cushion      &lt;br /&gt;
  [[cartoon_ring_mode]]              roving_polar_contacts        &lt;br /&gt;
  cartoon_ring_radius            roving_polar_cutoff          &lt;br /&gt;
  [[cartoon_ring_transparency]]      roving_ribbon                &lt;br /&gt;
  cartoon_ring_width             roving_selection             &lt;br /&gt;
  [[cartoon_round_helices]]          roving_spheres               &lt;br /&gt;
  [[cartoon_sampling]]               roving_sticks                &lt;br /&gt;
  cartoon_side_chain_helper      scene_animation              &lt;br /&gt;
  cartoon_smooth_cycles          scene_animation_duration     &lt;br /&gt;
  cartoon_smooth_first           scene_current_name           &lt;br /&gt;
  cartoon_smooth_last            scene_loop                   &lt;br /&gt;
  [[cartoon_smooth_loops]]           scene_restart_movie_delay    &lt;br /&gt;
  cartoon_throw                  scenes_changed               &lt;br /&gt;
  cartoon_trace_atoms            sculpt_angl_weight           &lt;br /&gt;
  [[cartoon_transparency]]           sculpt_auto_center           &lt;br /&gt;
  cartoon_tube_cap               sculpt_avd_excl              &lt;br /&gt;
  cartoon_tube_quality           sculpt_avd_gap               &lt;br /&gt;
  cartoon_tube_radius            sculpt_avd_range             &lt;br /&gt;
  cavity_cull                    sculpt_avd_weight            &lt;br /&gt;
  cgo_dot_radius                 sculpt_bond_weight           &lt;br /&gt;
  cgo_dot_width                  sculpt_field_mask            &lt;br /&gt;
  cgo_line_radius                sculpt_hb_overlap            &lt;br /&gt;
  cgo_line_width                 sculpt_hb_overlap_base       &lt;br /&gt;
  cgo_ray_width_scale            sculpt_line_weight           &lt;br /&gt;
  cgo_sphere_quality             sculpt_max_max               &lt;br /&gt;
  cgo_transparency               sculpt_max_min               &lt;br /&gt;
  clamp_colors                   sculpt_max_scale             &lt;br /&gt;
  connect_bonded                 sculpt_max_weight            &lt;br /&gt;
  connect_cutoff                 sculpt_memory                &lt;br /&gt;
  connect_mode                   sculpt_min_max               &lt;br /&gt;
  coulomb_cutoff                 sculpt_min_min               &lt;br /&gt;
  coulomb_dielectric             sculpt_min_scale             &lt;br /&gt;
  coulomb_units_factor           sculpt_min_weight            &lt;br /&gt;
  cull_spheres                   sculpt_nb_interval           &lt;br /&gt;
  [[Dash_Gap]]                       sculpt_plan_weight           &lt;br /&gt;
  [[Dash_Length]]                    sculpt_pyra_weight           &lt;br /&gt;
  [[Dash_Radius]]                    sculpt_tors_tolerance        &lt;br /&gt;
  [[Dash_Round_Ends]]                sculpt_tors_weight           &lt;br /&gt;
  dash_width                     sculpt_tri_max               &lt;br /&gt;
  debug_pick                     sculpt_tri_min               &lt;br /&gt;
  defer_builds_mode              sculpt_tri_mode              &lt;br /&gt;
  defer_updates                  sculpt_tri_scale             &lt;br /&gt;
  depth_cue                      sculpt_tri_weight            &lt;br /&gt;
  dihedral_label_position        sculpt_vdw_scale             &lt;br /&gt;
  dihedral_size                  sculpt_vdw_scale14           &lt;br /&gt;
  direct                         sculpt_vdw_vis_max           &lt;br /&gt;
  dist_counter                   sculpt_vdw_vis_mid           &lt;br /&gt;
  distance_exclusion             sculpt_vdw_vis_min           &lt;br /&gt;
  dot_color                      sculpt_vdw_vis_mode          &lt;br /&gt;
  dot_density                    sculpt_vdw_weight            &lt;br /&gt;
  dot_hydrogens                  sculpt_vdw_weight14          &lt;br /&gt;
  dot_lighting                   sculpting                    &lt;br /&gt;
  dot_mode                       sculpting_cycles             &lt;br /&gt;
  dot_normals                    secondary_structure          &lt;br /&gt;
  dot_radius                     security                     &lt;br /&gt;
  dot_solvent                    sel_counter&lt;br /&gt;
  [[dot_width]]                      selection_overlay            &lt;br /&gt;
  draw_frames                    selection_round_points       &lt;br /&gt;
  editor_auto_dihedral           selection_visible_only       &lt;br /&gt;
  editor_auto_origin             [[selection_width]]              &lt;br /&gt;
  editor_label_fragments         selection_width_max          &lt;br /&gt;
  fast_idle                      selection_width_scale        &lt;br /&gt;
  fetch_path                     [[seq_view]]                     &lt;br /&gt;
  [[Field_Of_View]]                  seq_view_alignment           &lt;br /&gt;
  fit_iterations                 seq_view_color               &lt;br /&gt;
  fit_tolerance                  seq_view_discrete_by_state   &lt;br /&gt;
  float_labels                   seq_view_fill_char           &lt;br /&gt;
  fog                            seq_view_fill_color          &lt;br /&gt;
  fog_start                      seq_view_format              &lt;br /&gt;
  frame                          seq_view_label_color         &lt;br /&gt;
  full_screen                    seq_view_label_mode          &lt;br /&gt;
  gamma                          seq_view_label_spacing       &lt;br /&gt;
  gaussian_b_adjust              seq_view_label_start         &lt;br /&gt;
  gaussian_b_floor               [[seq_view_location]]            &lt;br /&gt;
  gaussian_resolution            seq_view_overlay             &lt;br /&gt;
  gl_ambient                     seq_view_unaligned_color     &lt;br /&gt;
  h_bond_cone                    seq_view_unaligned_mode      &lt;br /&gt;
  h_bond_cutoff_center           session_file                 &lt;br /&gt;
  h_bond_cutoff_edge             session_migration            &lt;br /&gt;
  h_bond_exclusion               session_version_check        &lt;br /&gt;
  h_bond_max_angle               shininess                    &lt;br /&gt;
  h_bond_power_a                 show_alpha_checker           &lt;br /&gt;
  h_bond_power_b                 show_progress                &lt;br /&gt;
  [[half_bonds]]                     simplify_display_lists       &lt;br /&gt;
  hash_max                       single_image                 &lt;br /&gt;
  hide_underscore_names          slice_dynamic_grid           &lt;br /&gt;
  idle_delay                     slice_dynamic_grid_resolution&lt;br /&gt;
  ignore_case                    slice_grid                   &lt;br /&gt;
  ignore_pdb_segi                slice_height_map             &lt;br /&gt;
  image_dots_per_inch            slice_height_scale           &lt;br /&gt;
  internal_feedback              slice_track_camera           &lt;br /&gt;
  [[Internal Gui|internal_gui]]                   slow_idle                    &lt;br /&gt;
  internal_gui_control_size      smooth_color_triangle        &lt;br /&gt;
  internal_gui_mode              solvent_radius               &lt;br /&gt;
  internal_gui_width             spec_count                   &lt;br /&gt;
  [[internal_prompt]]                spec_direct                  &lt;br /&gt;
  isomesh_auto_state             spec_direct_power            &lt;br /&gt;
  [[label_color]]                    spec_power                   &lt;br /&gt;
  [[Label_font_id]]                  [[spec_reflect]]                 &lt;br /&gt;
  [[Label_outline_color]]            specular                     &lt;br /&gt;
  label_position                 specular_intensity           &lt;br /&gt;
  [[label_shadow_mode]]              [[sphere_color]]                 &lt;br /&gt;
  [[label_size]]                     sphere_mode                  &lt;br /&gt;
  legacy_mouse_zoom              sphere_point_max_size        &lt;br /&gt;
  legacy_vdw_radii               sphere_point_size            &lt;br /&gt;
  light                          sphere_quality               &lt;br /&gt;
  light2                         [[sphere_scale]]                 &lt;br /&gt;
  light3                         sphere_solvent               &lt;br /&gt;
  light4                         sphere_transparency          &lt;br /&gt;
  light5                         spheroid_fill                &lt;br /&gt;
  light6                         spheroid_scale               &lt;br /&gt;
  light7                         spheroid_smooth              &lt;br /&gt;
  light8                         ss_helix_phi_exclude         &lt;br /&gt;
  light9                         ss_helix_phi_include         &lt;br /&gt;
  light_count                    ss_helix_phi_target          &lt;br /&gt;
  line_radius                    ss_helix_psi_exclude         &lt;br /&gt;
  [[line_smooth]]                   ss_helix_psi_include         &lt;br /&gt;
  line_stick_helper              ss_helix_psi_target          &lt;br /&gt;
  line_width                     ss_strand_phi_exclude        &lt;br /&gt;
  log_box_selections             ss_strand_phi_include        &lt;br /&gt;
  log_conformations              ss_strand_phi_target         &lt;br /&gt;
  logging                        ss_strand_psi_exclude        &lt;br /&gt;
  matrix_mode                    ss_strand_psi_include        &lt;br /&gt;
  max_threads                    ss_strand_psi_target         &lt;br /&gt;
  max_triangles                  state                        &lt;br /&gt;
  mesh_color                     static_singletons            &lt;br /&gt;
  mesh_lighting                  stereo                       &lt;br /&gt;
  mesh_mode                      stereo_angle                 &lt;br /&gt;
  mesh_normals                   stereo_double_pump_mono      &lt;br /&gt;
  mesh_quality                   stereo_mode                  &lt;br /&gt;
  mesh_radius                    stereo_shift                 &lt;br /&gt;
  mesh_solvent                   stick_ball                   &lt;br /&gt;
  mesh_type                      stick_ball_ratio             &lt;br /&gt;
  mesh_width                     stick_color                  &lt;br /&gt;
  min_mesh_spacing               stick_fixed_radius           &lt;br /&gt;
  mouse_limit                    [[stick_nub]]                    &lt;br /&gt;
  mouse_restart_movie_delay      stick_overlap                &lt;br /&gt;
  mouse_scale                    stick_quality                &lt;br /&gt;
  mouse_selection_mode           stick_radius                 &lt;br /&gt;
  movie_delay                    stick_transparency           &lt;br /&gt;
  movie_loop                     stick_valence_scale          &lt;br /&gt;
  multiplex                      stop_on_exceptions           &lt;br /&gt;
  no_idle                        surface_best                 &lt;br /&gt;
  nonbonded_size                 surface_carve_cutoff         &lt;br /&gt;
  normal_workaround              surface_carve_selection      &lt;br /&gt;
  normalize_ccp4_maps            surface_carve_state          &lt;br /&gt;
  normalize_grd_maps             surface_circumscribe         &lt;br /&gt;
  normalize_o_maps               surface_clear_cutoff         &lt;br /&gt;
  nvidia_bugs                    surface_clear_selection      &lt;br /&gt;
  opaque_background              surface_clear_state          &lt;br /&gt;
  [[orthoscopic]]                    surface_color                &lt;br /&gt;
  overlay                        surface_debug                &lt;br /&gt;
  overlay_lines                  surface_miserable            &lt;br /&gt;
  pdb_conect_all                 surface_mode                 &lt;br /&gt;
  pdb_discrete_chains            surface_normal               &lt;br /&gt;
  pdb_echo_tags                  surface_optimize_subsets     &lt;br /&gt;
  pdb_hetatm_sort                surface_poor                 &lt;br /&gt;
  pdb_honor_model_number         surface_proximity            &lt;br /&gt;
  pdb_insertions_go_first        surface_quality              &lt;br /&gt;
  pdb_insure_orthogonal          surface_ramp_above_mode      &lt;br /&gt;
  pdb_literal_names              surface_solvent              &lt;br /&gt;
  pdb_no_end_record              surface_trim_cutoff          &lt;br /&gt;
  pdb_reformat_names_mode        surface_trim_factor          &lt;br /&gt;
  pdb_retain_ids                 surface_type                 &lt;br /&gt;
  pdb_standard_order             suspend_updates              &lt;br /&gt;
  pdb_truncate_residue_name      swap_dsn6_bytes              &lt;br /&gt;
  pdb_unbond_cations             sweep_angle                  &lt;br /&gt;
  pdb_use_ter_records            sweep_mode                   &lt;br /&gt;
  [[pickable]]                       sweep_phase                  &lt;br /&gt;
  png_file_gamma                 sweep_speed                  &lt;br /&gt;
  png_screen_gamma               test1                        &lt;br /&gt;
  power                          test2                        &lt;br /&gt;
  pqr_no_chain_id                text                         &lt;br /&gt;
  presentation                   texture_fonts                &lt;br /&gt;
  presentation_auto_quit         [[transparency]]                 &lt;br /&gt;
  presentation_auto_start        transparency_mode            &lt;br /&gt;
  presentation_mode              transparency_picking_mode    &lt;br /&gt;
  preserve_chempy_ids            triangle_max_passes          &lt;br /&gt;
  pymol_space_max_blue           trim_dots                    &lt;br /&gt;
  pymol_space_max_green          [[two_sided_lighting]]&lt;br /&gt;
  pymol_space_max_red            use_display_lists            &lt;br /&gt;
  pymol_space_min_factor         [[valence]]                      &lt;br /&gt;
  raise_exceptions               valence_default              &lt;br /&gt;
  rank_assisted_sorts            valence_size                 &lt;br /&gt;
  ray_blend_blue                 validate_object_names        &lt;br /&gt;
  ray_blend_colors               virtual_trackball            &lt;br /&gt;
  ray_blend_green                wildcard                     &lt;br /&gt;
  ray_blend_red                  wizard_prompt_mode           &lt;br /&gt;
  ray_color_ramps                wrap_output                  &lt;br /&gt;
&lt;br /&gt;
[[Category:Settings|All Settings]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Selection_width&amp;diff=8792</id>
		<title>Selection width</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Selection_width&amp;diff=8792"/>
		<updated>2006-09-10T04:41:50Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
Controls the minimum width of selection indicators in pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set selection_width, 3    (default)&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Selection_3.png|The selection indicators are in pink&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=File:Selection_3.png&amp;diff=2795</id>
		<title>File:Selection 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=File:Selection_3.png&amp;diff=2795"/>
		<updated>2006-09-10T04:39:03Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Selection_width&amp;diff=8791</id>
		<title>Selection width</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Selection_width&amp;diff=8791"/>
		<updated>2006-09-10T04:31:31Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
Controls the minimum width of selection indicators in pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set selection_width, 3    (default)&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Auto_zoom&amp;diff=825</id>
		<title>Auto zoom</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Auto_zoom&amp;diff=825"/>
		<updated>2006-09-10T04:29:40Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
When set &amp;quot;on&amp;quot;, this setting causes PyMOL to &amp;quot;auto_zoom&amp;quot; to any new object upon loading.  This is helpful when one wishes to look at a new object immediately upon loading it into your PyMOL session; it can also be vexing in the situation where you have a carefully constructed view that might be &amp;quot;lost&amp;quot; if you do not anticipate that the program will change the view on loading an additional object.  If you opt to use &amp;quot;auto_zoom on&amp;quot;, it is also wise to get in the habit of frequent session saves and also use of &amp;quot;scenes&amp;quot; and the &amp;quot;get_view&amp;quot; utility, which will save one's current view orientation matrix to the (temporary) memory cache.  The 'default' behavior (ON) can be overridden by placing the &amp;quot;set auto_zoom, off&amp;quot; statement into your '.pymolrc' file, located in your login directory (under all flavors of unix).&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set auto_zoom, on      &lt;br /&gt;
&lt;br /&gt;
set auto_zoom, off&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Settings&amp;diff=10113</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Settings&amp;diff=10113"/>
		<updated>2006-09-10T04:26:32Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the PyMol settings.  If you feel like documenting them, and what they do, feel free.  42 done, 476 to go !&lt;br /&gt;
&lt;br /&gt;
  active_selections              ray_default_renderer         &lt;br /&gt;
  all_states                     ray_direct_shade             &lt;br /&gt;
  ambient                        ray_hint_camera              &lt;br /&gt;
  angle_label_position           ray_hint_shadow              &lt;br /&gt;
  angle_size                     ray_improve_shadows          &lt;br /&gt;
  animation                      ray_interior_color           &lt;br /&gt;
  animation_duration             ray_interior_mode            &lt;br /&gt;
  [[antialias]]                      ray_interior_reflect         &lt;br /&gt;
  async_builds                   ray_interior_shadows         &lt;br /&gt;
  atom_name_wildcard             ray_interior_texture         &lt;br /&gt;
  auto_classify_atoms            ray_legacy_lighting          &lt;br /&gt;
  auto_color                     ray_max_passes               &lt;br /&gt;
  auto_dss                       [[ray_opaque_background]]       &lt;br /&gt;
  auto_hide_selections           [[ray_orthoscopic]]              &lt;br /&gt;
  auto_indicate_flags            ray_oversample_cutoff        &lt;br /&gt;
  auto_number_selections         ray_pixel_scale              &lt;br /&gt;
  auto_remove_hydrogens          [[ray_shadow]]                   &lt;br /&gt;
  auto_sculpt                    ray_shadow_decay_factor      &lt;br /&gt;
  auto_show_lines                ray_shadow_decay_range       &lt;br /&gt;
  auto_show_nonbonded            ray_shadow_fudge             &lt;br /&gt;
  auto_show_selections           [[ray_shadows]]                  &lt;br /&gt;
  auto_show_spheres              ray_texture                  &lt;br /&gt;
  [[auto_zoom]]                      ray_texture_settings         &lt;br /&gt;
  backface_cull                  ray_trace_depth_factor       &lt;br /&gt;
  batch_prefix                   ray_trace_disco_factor       &lt;br /&gt;
  [[bg_rgb]]                         [[ray_trace_fog]]                &lt;br /&gt;
  bonding_vdw_cutoff             ray_trace_fog_start          &lt;br /&gt;
  button_mode                    [[ray_trace_frames]]            &lt;br /&gt;
  button_mode_name               ray_trace_gain               &lt;br /&gt;
  cache_display                  ray_trace_mode               &lt;br /&gt;
  cache_frames                   ray_trace_slope_factor       &lt;br /&gt;
  cache_memory                   ray_transparency_contrast    &lt;br /&gt;
  [[cartoon_color]]                  ray_transparency_shadows     &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_cylindrical_helices]]    ray_transparency_spec_cut    &lt;br /&gt;
  cartoon_debug                  ray_transparency_specular    &lt;br /&gt;
  [[cartoon_discrete_colors]]        ray_triangle_fudge           &lt;br /&gt;
  cartoon_dumbbell_length        reflect                      &lt;br /&gt;
  cartoon_dumbbell_radius        reflect_power                &lt;br /&gt;
  cartoon_dumbbell_width         retain_order                 &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_fancy_helices]]          ribbon_color                 &lt;br /&gt;
  [[cartoon_fancy_sheets]]           ribbon_nucleic_acid_mode     &lt;br /&gt;
  cartoon_flat_cycles            ribbon_power                 &lt;br /&gt;
  cartoon_flat_sheets            ribbon_power_b               &lt;br /&gt;
  cartoon_helix_radius           ribbon_radius                &lt;br /&gt;
  [[cartoon_highlight_color]]        [[ribbon_sampling]]              &lt;br /&gt;
  cartoon_ladder_color           ribbon_side_chain_helper     &lt;br /&gt;
  cartoon_ladder_mode            ribbon_smooth                &lt;br /&gt;
  cartoon_ladder_radius          ribbon_throw                 &lt;br /&gt;
  cartoon_loop_cap               ribbon_trace_atoms           &lt;br /&gt;
  cartoon_loop_quality           [[ribbon_width]]                 &lt;br /&gt;
  cartoon_loop_radius            robust_logs                  &lt;br /&gt;
  [[cartoon_nucleic_acid_color]]     rock_delay                   &lt;br /&gt;
  [[cartoon_nucleic_acid_mode]]      roving_byres                 &lt;br /&gt;
  cartoon_oval_length            roving_cartoon               &lt;br /&gt;
  cartoon_oval_quality           roving_delay                 &lt;br /&gt;
  cartoon_oval_width             roving_detail                &lt;br /&gt;
  cartoon_power                  roving_isomesh               &lt;br /&gt;
  cartoon_power_b                roving_isosurface            &lt;br /&gt;
  cartoon_putty_quality          roving_labels                &lt;br /&gt;
  cartoon_putty_radius           roving_lines                 &lt;br /&gt;
  cartoon_putty_range            roving_map1_level            &lt;br /&gt;
  cartoon_putty_scale_max        roving_map1_name             &lt;br /&gt;
  cartoon_putty_scale_min        roving_map2_level            &lt;br /&gt;
  cartoon_putty_scale_power      roving_map2_name             &lt;br /&gt;
  cartoon_rect_length            roving_map3_level            &lt;br /&gt;
  cartoon_rect_width             roving_map3_name             &lt;br /&gt;
  cartoon_refine                 roving_nb_spheres            &lt;br /&gt;
  cartoon_refine_normals         roving_nonbonded             &lt;br /&gt;
  cartoon_refine_tips            roving_origin                &lt;br /&gt;
  cartoon_ring_color             roving_origin_z              &lt;br /&gt;
  cartoon_ring_finder            roving_origin_z_cushion      &lt;br /&gt;
  [[cartoon_ring_mode]]              roving_polar_contacts        &lt;br /&gt;
  cartoon_ring_radius            roving_polar_cutoff          &lt;br /&gt;
  [[cartoon_ring_transparency]]      roving_ribbon                &lt;br /&gt;
  cartoon_ring_width             roving_selection             &lt;br /&gt;
  [[cartoon_round_helices]]          roving_spheres               &lt;br /&gt;
  [[cartoon_sampling]]               roving_sticks                &lt;br /&gt;
  cartoon_side_chain_helper      scene_animation              &lt;br /&gt;
  cartoon_smooth_cycles          scene_animation_duration     &lt;br /&gt;
  cartoon_smooth_first           scene_current_name           &lt;br /&gt;
  cartoon_smooth_last            scene_loop                   &lt;br /&gt;
  [[cartoon_smooth_loops]]           scene_restart_movie_delay    &lt;br /&gt;
  cartoon_throw                  scenes_changed               &lt;br /&gt;
  cartoon_trace_atoms            sculpt_angl_weight           &lt;br /&gt;
  [[cartoon_transparency]]           sculpt_auto_center           &lt;br /&gt;
  cartoon_tube_cap               sculpt_avd_excl              &lt;br /&gt;
  cartoon_tube_quality           sculpt_avd_gap               &lt;br /&gt;
  cartoon_tube_radius            sculpt_avd_range             &lt;br /&gt;
  cavity_cull                    sculpt_avd_weight            &lt;br /&gt;
  cgo_dot_radius                 sculpt_bond_weight           &lt;br /&gt;
  cgo_dot_width                  sculpt_field_mask            &lt;br /&gt;
  cgo_line_radius                sculpt_hb_overlap            &lt;br /&gt;
  cgo_line_width                 sculpt_hb_overlap_base       &lt;br /&gt;
  cgo_ray_width_scale            sculpt_line_weight           &lt;br /&gt;
  cgo_sphere_quality             sculpt_max_max               &lt;br /&gt;
  cgo_transparency               sculpt_max_min               &lt;br /&gt;
  clamp_colors                   sculpt_max_scale             &lt;br /&gt;
  connect_bonded                 sculpt_max_weight            &lt;br /&gt;
  connect_cutoff                 sculpt_memory                &lt;br /&gt;
  connect_mode                   sculpt_min_max               &lt;br /&gt;
  coulomb_cutoff                 sculpt_min_min               &lt;br /&gt;
  coulomb_dielectric             sculpt_min_scale             &lt;br /&gt;
  coulomb_units_factor           sculpt_min_weight            &lt;br /&gt;
  cull_spheres                   sculpt_nb_interval           &lt;br /&gt;
  [[Dash_Gap]]                       sculpt_plan_weight           &lt;br /&gt;
  [[Dash_Length]]                    sculpt_pyra_weight           &lt;br /&gt;
  [[Dash_Radius]]                    sculpt_tors_tolerance        &lt;br /&gt;
  [[Dash_Round_Ends]]                sculpt_tors_weight           &lt;br /&gt;
  dash_width                     sculpt_tri_max               &lt;br /&gt;
  debug_pick                     sculpt_tri_min               &lt;br /&gt;
  defer_builds_mode              sculpt_tri_mode              &lt;br /&gt;
  defer_updates                  sculpt_tri_scale             &lt;br /&gt;
  depth_cue                      sculpt_tri_weight            &lt;br /&gt;
  dihedral_label_position        sculpt_vdw_scale             &lt;br /&gt;
  dihedral_size                  sculpt_vdw_scale14           &lt;br /&gt;
  direct                         sculpt_vdw_vis_max           &lt;br /&gt;
  dist_counter                   sculpt_vdw_vis_mid           &lt;br /&gt;
  distance_exclusion             sculpt_vdw_vis_min           &lt;br /&gt;
  dot_color                      sculpt_vdw_vis_mode          &lt;br /&gt;
  dot_density                    sculpt_vdw_weight            &lt;br /&gt;
  dot_hydrogens                  sculpt_vdw_weight14          &lt;br /&gt;
  dot_lighting                   sculpting                    &lt;br /&gt;
  dot_mode                       sculpting_cycles             &lt;br /&gt;
  dot_normals                    secondary_structure          &lt;br /&gt;
  dot_radius                     security                     &lt;br /&gt;
  dot_solvent                    sel_counter&lt;br /&gt;
  [[dot_width]]                      selection_overlay            &lt;br /&gt;
  draw_frames                    selection_round_points       &lt;br /&gt;
  editor_auto_dihedral           selection_visible_only       &lt;br /&gt;
  editor_auto_origin             [[selection_width]]              &lt;br /&gt;
  editor_label_fragments         selection_width_max          &lt;br /&gt;
  fast_idle                      selection_width_scale        &lt;br /&gt;
  fetch_path                     [[seq_view]]                     &lt;br /&gt;
  [[Field_Of_View]]                  seq_view_alignment           &lt;br /&gt;
  fit_iterations                 seq_view_color               &lt;br /&gt;
  fit_tolerance                  seq_view_discrete_by_state   &lt;br /&gt;
  float_labels                   seq_view_fill_char           &lt;br /&gt;
  fog                            seq_view_fill_color          &lt;br /&gt;
  fog_start                      seq_view_format              &lt;br /&gt;
  frame                          seq_view_label_color         &lt;br /&gt;
  full_screen                    seq_view_label_mode          &lt;br /&gt;
  gamma                          seq_view_label_spacing       &lt;br /&gt;
  gaussian_b_adjust              seq_view_label_start         &lt;br /&gt;
  gaussian_b_floor               [[seq_view_location]]            &lt;br /&gt;
  gaussian_resolution            seq_view_overlay             &lt;br /&gt;
  gl_ambient                     seq_view_unaligned_color     &lt;br /&gt;
  h_bond_cone                    seq_view_unaligned_mode      &lt;br /&gt;
  h_bond_cutoff_center           session_file                 &lt;br /&gt;
  h_bond_cutoff_edge             session_migration            &lt;br /&gt;
  h_bond_exclusion               session_version_check        &lt;br /&gt;
  h_bond_max_angle               shininess                    &lt;br /&gt;
  h_bond_power_a                 show_alpha_checker           &lt;br /&gt;
  h_bond_power_b                 show_progress                &lt;br /&gt;
  [[half_bonds]]                     simplify_display_lists       &lt;br /&gt;
  hash_max                       single_image                 &lt;br /&gt;
  hide_underscore_names          slice_dynamic_grid           &lt;br /&gt;
  idle_delay                     slice_dynamic_grid_resolution&lt;br /&gt;
  ignore_case                    slice_grid                   &lt;br /&gt;
  ignore_pdb_segi                slice_height_map             &lt;br /&gt;
  image_dots_per_inch            slice_height_scale           &lt;br /&gt;
  internal_feedback              slice_track_camera           &lt;br /&gt;
  [[Internal Gui|internal_gui]]                   slow_idle                    &lt;br /&gt;
  internal_gui_control_size      smooth_color_triangle        &lt;br /&gt;
  internal_gui_mode              solvent_radius               &lt;br /&gt;
  internal_gui_width             spec_count                   &lt;br /&gt;
  [[internal_prompt]]                spec_direct                  &lt;br /&gt;
  isomesh_auto_state             spec_direct_power            &lt;br /&gt;
  [[label_color]]                    spec_power                   &lt;br /&gt;
  [[Label_font_id]]                  [[spec_reflect]]                 &lt;br /&gt;
  [[Label_outline_color]]            specular                     &lt;br /&gt;
  label_position                 specular_intensity           &lt;br /&gt;
  [[label_shadow_mode]]              [[sphere_color]]                 &lt;br /&gt;
  [[label_size]]                     sphere_mode                  &lt;br /&gt;
  legacy_mouse_zoom              sphere_point_max_size        &lt;br /&gt;
  legacy_vdw_radii               sphere_point_size            &lt;br /&gt;
  light                          sphere_quality               &lt;br /&gt;
  light2                         [[sphere_scale]]                 &lt;br /&gt;
  light3                         sphere_solvent               &lt;br /&gt;
  light4                         sphere_transparency          &lt;br /&gt;
  light5                         spheroid_fill                &lt;br /&gt;
  light6                         spheroid_scale               &lt;br /&gt;
  light7                         spheroid_smooth              &lt;br /&gt;
  light8                         ss_helix_phi_exclude         &lt;br /&gt;
  light9                         ss_helix_phi_include         &lt;br /&gt;
  light_count                    ss_helix_phi_target          &lt;br /&gt;
  line_radius                    ss_helix_psi_exclude         &lt;br /&gt;
  [[line_smooth]]                   ss_helix_psi_include         &lt;br /&gt;
  line_stick_helper              ss_helix_psi_target          &lt;br /&gt;
  line_width                     ss_strand_phi_exclude        &lt;br /&gt;
  log_box_selections             ss_strand_phi_include        &lt;br /&gt;
  log_conformations              ss_strand_phi_target         &lt;br /&gt;
  logging                        ss_strand_psi_exclude        &lt;br /&gt;
  matrix_mode                    ss_strand_psi_include        &lt;br /&gt;
  max_threads                    ss_strand_psi_target         &lt;br /&gt;
  max_triangles                  state                        &lt;br /&gt;
  mesh_color                     static_singletons            &lt;br /&gt;
  mesh_lighting                  stereo                       &lt;br /&gt;
  mesh_mode                      stereo_angle                 &lt;br /&gt;
  mesh_normals                   stereo_double_pump_mono      &lt;br /&gt;
  mesh_quality                   stereo_mode                  &lt;br /&gt;
  mesh_radius                    stereo_shift                 &lt;br /&gt;
  mesh_solvent                   stick_ball                   &lt;br /&gt;
  mesh_type                      stick_ball_ratio             &lt;br /&gt;
  mesh_width                     stick_color                  &lt;br /&gt;
  min_mesh_spacing               stick_fixed_radius           &lt;br /&gt;
  mouse_limit                    [[stick_nub]]                    &lt;br /&gt;
  mouse_restart_movie_delay      stick_overlap                &lt;br /&gt;
  mouse_scale                    stick_quality                &lt;br /&gt;
  mouse_selection_mode           stick_radius                 &lt;br /&gt;
  movie_delay                    stick_transparency           &lt;br /&gt;
  movie_loop                     stick_valence_scale          &lt;br /&gt;
  multiplex                      stop_on_exceptions           &lt;br /&gt;
  no_idle                        surface_best                 &lt;br /&gt;
  nonbonded_size                 surface_carve_cutoff         &lt;br /&gt;
  normal_workaround              surface_carve_selection      &lt;br /&gt;
  normalize_ccp4_maps            surface_carve_state          &lt;br /&gt;
  normalize_grd_maps             surface_circumscribe         &lt;br /&gt;
  normalize_o_maps               surface_clear_cutoff         &lt;br /&gt;
  nvidia_bugs                    surface_clear_selection      &lt;br /&gt;
  opaque_background              surface_clear_state          &lt;br /&gt;
  [[orthoscopic]]                    surface_color                &lt;br /&gt;
  overlay                        surface_debug                &lt;br /&gt;
  overlay_lines                  surface_miserable            &lt;br /&gt;
  pdb_conect_all                 surface_mode                 &lt;br /&gt;
  pdb_discrete_chains            surface_normal               &lt;br /&gt;
  pdb_echo_tags                  surface_optimize_subsets     &lt;br /&gt;
  pdb_hetatm_sort                surface_poor                 &lt;br /&gt;
  pdb_honor_model_number         surface_proximity            &lt;br /&gt;
  pdb_insertions_go_first        surface_quality              &lt;br /&gt;
  pdb_insure_orthogonal          surface_ramp_above_mode      &lt;br /&gt;
  pdb_literal_names              surface_solvent              &lt;br /&gt;
  pdb_no_end_record              surface_trim_cutoff          &lt;br /&gt;
  pdb_reformat_names_mode        surface_trim_factor          &lt;br /&gt;
  pdb_retain_ids                 surface_type                 &lt;br /&gt;
  pdb_standard_order             suspend_updates              &lt;br /&gt;
  pdb_truncate_residue_name      swap_dsn6_bytes              &lt;br /&gt;
  pdb_unbond_cations             sweep_angle                  &lt;br /&gt;
  pdb_use_ter_records            sweep_mode                   &lt;br /&gt;
  [[pickable]]                       sweep_phase                  &lt;br /&gt;
  png_file_gamma                 sweep_speed                  &lt;br /&gt;
  png_screen_gamma               test1                        &lt;br /&gt;
  power                          test2                        &lt;br /&gt;
  pqr_no_chain_id                text                         &lt;br /&gt;
  presentation                   texture_fonts                &lt;br /&gt;
  presentation_auto_quit         [[transparency]]                 &lt;br /&gt;
  presentation_auto_start        transparency_mode            &lt;br /&gt;
  presentation_mode              transparency_picking_mode    &lt;br /&gt;
  preserve_chempy_ids            triangle_max_passes          &lt;br /&gt;
  pymol_space_max_blue           trim_dots                    &lt;br /&gt;
  pymol_space_max_green          [[two_sided_lighting]]&lt;br /&gt;
  pymol_space_max_red            use_display_lists            &lt;br /&gt;
  pymol_space_min_factor         [[valence]]                      &lt;br /&gt;
  raise_exceptions               valence_default              &lt;br /&gt;
  rank_assisted_sorts            valence_size                 &lt;br /&gt;
  ray_blend_blue                 validate_object_names        &lt;br /&gt;
  ray_blend_colors               virtual_trackball            &lt;br /&gt;
  ray_blend_green                wildcard                     &lt;br /&gt;
  ray_blend_red                  wizard_prompt_mode           &lt;br /&gt;
  ray_color_ramps                wrap_output                  &lt;br /&gt;
&lt;br /&gt;
[[Category:Settings|All Settings]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Auto_zoom&amp;diff=824</id>
		<title>Auto zoom</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Auto_zoom&amp;diff=824"/>
		<updated>2006-09-10T04:23:19Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
When set &amp;quot;on&amp;quot;, this setting causes PyMOL to &amp;quot;auto_zoom&amp;quot; to any new object upon loading.  This is helpful when one wishes to look at a new object immediately upon loading it into your PyMOL session; it can also be vexing in the situation where you have a carefully constructed view that might be &amp;quot;lost&amp;quot; if you do not anticipate that the program will change the view on loading an additional object.  If you opt to use &amp;quot;auto_zoom on&amp;quot;, it is also wise to get in the habit of frequent session saves and also use of &amp;quot;scenes&amp;quot; and the &amp;quot;get_view&amp;quot; utility, which will save one's current view orientation matrix to the (temporary) memory cache.  The 'default' behavior (ON) can be overridden by placing the &amp;quot;set auto_zoom, off&amp;quot; statement into your '.pymolrc' file, located in your login directory (under all flavors of unix).&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
set auto_zoom, on&lt;br /&gt;
set auto_zoom, off&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Settings&amp;diff=10112</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Settings&amp;diff=10112"/>
		<updated>2006-09-10T04:14:23Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the PyMol settings.  If you feel like documenting them, and what they do, feel free.  42 done, 476 to go !&lt;br /&gt;
&lt;br /&gt;
  active_selections              ray_default_renderer         &lt;br /&gt;
  all_states                     ray_direct_shade             &lt;br /&gt;
  ambient                        ray_hint_camera              &lt;br /&gt;
  angle_label_position           ray_hint_shadow              &lt;br /&gt;
  angle_size                     ray_improve_shadows          &lt;br /&gt;
  animation                      ray_interior_color           &lt;br /&gt;
  animation_duration             ray_interior_mode            &lt;br /&gt;
  [[antialias]]                      ray_interior_reflect         &lt;br /&gt;
  async_builds                   ray_interior_shadows         &lt;br /&gt;
  atom_name_wildcard             ray_interior_texture         &lt;br /&gt;
  auto_classify_atoms            ray_legacy_lighting          &lt;br /&gt;
  auto_color                     ray_max_passes               &lt;br /&gt;
  auto_dss                       [[ray_opaque_background]]       &lt;br /&gt;
  auto_hide_selections           [[ray_orthoscopic]]              &lt;br /&gt;
  auto_indicate_flags            ray_oversample_cutoff        &lt;br /&gt;
  auto_number_selections         ray_pixel_scale              &lt;br /&gt;
  auto_remove_hydrogens          [[ray_shadow]]                   &lt;br /&gt;
  auto_sculpt                    ray_shadow_decay_factor      &lt;br /&gt;
  auto_show_lines                ray_shadow_decay_range       &lt;br /&gt;
  auto_show_nonbonded            ray_shadow_fudge             &lt;br /&gt;
  auto_show_selections           [[ray_Shadows]]                  &lt;br /&gt;
  auto_show_spheres              ray_texture                  &lt;br /&gt;
  [[auto_zoom]]                      ray_texture_settings         &lt;br /&gt;
  backface_cull                  ray_trace_depth_factor       &lt;br /&gt;
  batch_prefix                   ray_trace_disco_factor       &lt;br /&gt;
  [[bg_rgb]]                         [[Ray_Trace_Fog]]                &lt;br /&gt;
  bonding_vdw_cutoff             ray_trace_fog_start          &lt;br /&gt;
  button_mode                    [[ray_trace_frames]]            &lt;br /&gt;
  button_mode_name               ray_trace_gain               &lt;br /&gt;
  cache_display                  ray_trace_mode               &lt;br /&gt;
  cache_frames                   ray_trace_slope_factor       &lt;br /&gt;
  cache_memory                   ray_transparency_contrast    &lt;br /&gt;
  [[cartoon_color]]                  ray_transparency_shadows     &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_cylindrical_helices]]    ray_transparency_spec_cut    &lt;br /&gt;
  cartoon_debug                  ray_transparency_specular    &lt;br /&gt;
  [[cartoon_discrete_colors]]        ray_triangle_fudge           &lt;br /&gt;
  cartoon_dumbbell_length        reflect                      &lt;br /&gt;
  cartoon_dumbbell_radius        reflect_power                &lt;br /&gt;
  cartoon_dumbbell_width         retain_order                 &lt;br /&gt;
  [[Cartoon Helix Settings|cartoon_fancy_helices]]          ribbon_color                 &lt;br /&gt;
  [[cartoon_fancy_sheets]]           ribbon_nucleic_acid_mode     &lt;br /&gt;
  cartoon_flat_cycles            ribbon_power                 &lt;br /&gt;
  cartoon_flat_sheets            ribbon_power_b               &lt;br /&gt;
  cartoon_helix_radius           ribbon_radius                &lt;br /&gt;
  [[cartoon_highlight_color]]        [[ribbon_sampling]]              &lt;br /&gt;
  cartoon_ladder_color           ribbon_side_chain_helper     &lt;br /&gt;
  cartoon_ladder_mode            ribbon_smooth                &lt;br /&gt;
  cartoon_ladder_radius          ribbon_throw                 &lt;br /&gt;
  cartoon_loop_cap               ribbon_trace_atoms           &lt;br /&gt;
  cartoon_loop_quality           [[Ribbon_Width]]                 &lt;br /&gt;
  cartoon_loop_radius            robust_logs                  &lt;br /&gt;
  [[cartoon_nucleic_acid_color]]     rock_delay                   &lt;br /&gt;
  [[cartoon_nucleic_acid_mode]]      roving_byres                 &lt;br /&gt;
  cartoon_oval_length            roving_cartoon               &lt;br /&gt;
  cartoon_oval_quality           roving_delay                 &lt;br /&gt;
  cartoon_oval_width             roving_detail                &lt;br /&gt;
  cartoon_power                  roving_isomesh               &lt;br /&gt;
  cartoon_power_b                roving_isosurface            &lt;br /&gt;
  cartoon_putty_quality          roving_labels                &lt;br /&gt;
  cartoon_putty_radius           roving_lines                 &lt;br /&gt;
  cartoon_putty_range            roving_map1_level            &lt;br /&gt;
  cartoon_putty_scale_max        roving_map1_name             &lt;br /&gt;
  cartoon_putty_scale_min        roving_map2_level            &lt;br /&gt;
  cartoon_putty_scale_power      roving_map2_name             &lt;br /&gt;
  cartoon_rect_length            roving_map3_level            &lt;br /&gt;
  cartoon_rect_width             roving_map3_name             &lt;br /&gt;
  cartoon_refine                 roving_nb_spheres            &lt;br /&gt;
  cartoon_refine_normals         roving_nonbonded             &lt;br /&gt;
  cartoon_refine_tips            roving_origin                &lt;br /&gt;
  cartoon_ring_color             roving_origin_z              &lt;br /&gt;
  cartoon_ring_finder            roving_origin_z_cushion      &lt;br /&gt;
  [[cartoon_ring_mode]]              roving_polar_contacts        &lt;br /&gt;
  cartoon_ring_radius            roving_polar_cutoff          &lt;br /&gt;
  [[cartoon_ring_transparency]]      roving_ribbon                &lt;br /&gt;
  cartoon_ring_width             roving_selection             &lt;br /&gt;
  [[cartoon_round_helices]]          roving_spheres               &lt;br /&gt;
  [[cartoon_sampling]]               roving_sticks                &lt;br /&gt;
  cartoon_side_chain_helper      scene_animation              &lt;br /&gt;
  cartoon_smooth_cycles          scene_animation_duration     &lt;br /&gt;
  cartoon_smooth_first           scene_current_name           &lt;br /&gt;
  cartoon_smooth_last            scene_loop                   &lt;br /&gt;
  [[cartoon_smooth_loops]]           scene_restart_movie_delay    &lt;br /&gt;
  cartoon_throw                  scenes_changed               &lt;br /&gt;
  cartoon_trace_atoms            sculpt_angl_weight           &lt;br /&gt;
  [[cartoon_transparency]]           sculpt_auto_center           &lt;br /&gt;
  cartoon_tube_cap               sculpt_avd_excl              &lt;br /&gt;
  cartoon_tube_quality           sculpt_avd_gap               &lt;br /&gt;
  cartoon_tube_radius            sculpt_avd_range             &lt;br /&gt;
  cavity_cull                    sculpt_avd_weight            &lt;br /&gt;
  cgo_dot_radius                 sculpt_bond_weight           &lt;br /&gt;
  cgo_dot_width                  sculpt_field_mask            &lt;br /&gt;
  cgo_line_radius                sculpt_hb_overlap            &lt;br /&gt;
  cgo_line_width                 sculpt_hb_overlap_base       &lt;br /&gt;
  cgo_ray_width_scale            sculpt_line_weight           &lt;br /&gt;
  cgo_sphere_quality             sculpt_max_max               &lt;br /&gt;
  cgo_transparency               sculpt_max_min               &lt;br /&gt;
  clamp_colors                   sculpt_max_scale             &lt;br /&gt;
  connect_bonded                 sculpt_max_weight            &lt;br /&gt;
  connect_cutoff                 sculpt_memory                &lt;br /&gt;
  connect_mode                   sculpt_min_max               &lt;br /&gt;
  coulomb_cutoff                 sculpt_min_min               &lt;br /&gt;
  coulomb_dielectric             sculpt_min_scale             &lt;br /&gt;
  coulomb_units_factor           sculpt_min_weight            &lt;br /&gt;
  cull_spheres                   sculpt_nb_interval           &lt;br /&gt;
  [[Dash_Gap]]                       sculpt_plan_weight           &lt;br /&gt;
  [[Dash_Length]]                    sculpt_pyra_weight           &lt;br /&gt;
  [[Dash_Radius]]                    sculpt_tors_tolerance        &lt;br /&gt;
  [[Dash_Round_Ends]]                sculpt_tors_weight           &lt;br /&gt;
  dash_width                     sculpt_tri_max               &lt;br /&gt;
  debug_pick                     sculpt_tri_min               &lt;br /&gt;
  defer_builds_mode              sculpt_tri_mode              &lt;br /&gt;
  defer_updates                  sculpt_tri_scale             &lt;br /&gt;
  depth_cue                      sculpt_tri_weight            &lt;br /&gt;
  dihedral_label_position        sculpt_vdw_scale             &lt;br /&gt;
  dihedral_size                  sculpt_vdw_scale14           &lt;br /&gt;
  direct                         sculpt_vdw_vis_max           &lt;br /&gt;
  dist_counter                   sculpt_vdw_vis_mid           &lt;br /&gt;
  distance_exclusion             sculpt_vdw_vis_min           &lt;br /&gt;
  dot_color                      sculpt_vdw_vis_mode          &lt;br /&gt;
  dot_density                    sculpt_vdw_weight            &lt;br /&gt;
  dot_hydrogens                  sculpt_vdw_weight14          &lt;br /&gt;
  dot_lighting                   sculpting                    &lt;br /&gt;
  dot_mode                       sculpting_cycles             &lt;br /&gt;
  dot_normals                    secondary_structure          &lt;br /&gt;
  dot_radius                     security                     &lt;br /&gt;
  dot_solvent                    sel_counter&lt;br /&gt;
  [[dot_width]]                      selection_overlay            &lt;br /&gt;
  draw_frames                    selection_round_points       &lt;br /&gt;
  editor_auto_dihedral           selection_visible_only       &lt;br /&gt;
  editor_auto_origin             selection_width              &lt;br /&gt;
  editor_label_fragments         selection_width_max          &lt;br /&gt;
  fast_idle                      selection_width_scale        &lt;br /&gt;
  fetch_path                     [[seq_view]]                     &lt;br /&gt;
  [[Field_Of_View]]                  seq_view_alignment           &lt;br /&gt;
  fit_iterations                 seq_view_color               &lt;br /&gt;
  fit_tolerance                  seq_view_discrete_by_state   &lt;br /&gt;
  float_labels                   seq_view_fill_char           &lt;br /&gt;
  fog                            seq_view_fill_color          &lt;br /&gt;
  fog_start                      seq_view_format              &lt;br /&gt;
  frame                          seq_view_label_color         &lt;br /&gt;
  full_screen                    seq_view_label_mode          &lt;br /&gt;
  gamma                          seq_view_label_spacing       &lt;br /&gt;
  gaussian_b_adjust              seq_view_label_start         &lt;br /&gt;
  gaussian_b_floor               [[seq_view_location]]            &lt;br /&gt;
  gaussian_resolution            seq_view_overlay             &lt;br /&gt;
  gl_ambient                     seq_view_unaligned_color     &lt;br /&gt;
  h_bond_cone                    seq_view_unaligned_mode      &lt;br /&gt;
  h_bond_cutoff_center           session_file                 &lt;br /&gt;
  h_bond_cutoff_edge             session_migration            &lt;br /&gt;
  h_bond_exclusion               session_version_check        &lt;br /&gt;
  h_bond_max_angle               shininess                    &lt;br /&gt;
  h_bond_power_a                 show_alpha_checker           &lt;br /&gt;
  h_bond_power_b                 show_progress                &lt;br /&gt;
  [[half_bonds]]                     simplify_display_lists       &lt;br /&gt;
  hash_max                       single_image                 &lt;br /&gt;
  hide_underscore_names          slice_dynamic_grid           &lt;br /&gt;
  idle_delay                     slice_dynamic_grid_resolution&lt;br /&gt;
  ignore_case                    slice_grid                   &lt;br /&gt;
  ignore_pdb_segi                slice_height_map             &lt;br /&gt;
  image_dots_per_inch            slice_height_scale           &lt;br /&gt;
  internal_feedback              slice_track_camera           &lt;br /&gt;
  [[Internal Gui|internal_gui]]                   slow_idle                    &lt;br /&gt;
  internal_gui_control_size      smooth_color_triangle        &lt;br /&gt;
  internal_gui_mode              solvent_radius               &lt;br /&gt;
  internal_gui_width             spec_count                   &lt;br /&gt;
  [[internal_prompt]]                spec_direct                  &lt;br /&gt;
  isomesh_auto_state             spec_direct_power            &lt;br /&gt;
  [[label_color]]                    spec_power                   &lt;br /&gt;
  [[Label_font_id]]                  [[spec_reflect]]                 &lt;br /&gt;
  [[Label_outline_color]]            specular                     &lt;br /&gt;
  label_position                 specular_intensity           &lt;br /&gt;
  [[label_shadow_mode]]              [[sphere_color]]                 &lt;br /&gt;
  [[label_size]]                     sphere_mode                  &lt;br /&gt;
  legacy_mouse_zoom              sphere_point_max_size        &lt;br /&gt;
  legacy_vdw_radii               sphere_point_size            &lt;br /&gt;
  light                          sphere_quality               &lt;br /&gt;
  light2                         [[sphere_scale]]                 &lt;br /&gt;
  light3                         sphere_solvent               &lt;br /&gt;
  light4                         sphere_transparency          &lt;br /&gt;
  light5                         spheroid_fill                &lt;br /&gt;
  light6                         spheroid_scale               &lt;br /&gt;
  light7                         spheroid_smooth              &lt;br /&gt;
  light8                         ss_helix_phi_exclude         &lt;br /&gt;
  light9                         ss_helix_phi_include         &lt;br /&gt;
  light_count                    ss_helix_phi_target          &lt;br /&gt;
  line_radius                    ss_helix_psi_exclude         &lt;br /&gt;
  [[line_smooth]]                   ss_helix_psi_include         &lt;br /&gt;
  line_stick_helper              ss_helix_psi_target          &lt;br /&gt;
  line_width                     ss_strand_phi_exclude        &lt;br /&gt;
  log_box_selections             ss_strand_phi_include        &lt;br /&gt;
  log_conformations              ss_strand_phi_target         &lt;br /&gt;
  logging                        ss_strand_psi_exclude        &lt;br /&gt;
  matrix_mode                    ss_strand_psi_include        &lt;br /&gt;
  max_threads                    ss_strand_psi_target         &lt;br /&gt;
  max_triangles                  state                        &lt;br /&gt;
  mesh_color                     static_singletons            &lt;br /&gt;
  mesh_lighting                  stereo                       &lt;br /&gt;
  mesh_mode                      stereo_angle                 &lt;br /&gt;
  mesh_normals                   stereo_double_pump_mono      &lt;br /&gt;
  mesh_quality                   stereo_mode                  &lt;br /&gt;
  mesh_radius                    stereo_shift                 &lt;br /&gt;
  mesh_solvent                   stick_ball                   &lt;br /&gt;
  mesh_type                      stick_ball_ratio             &lt;br /&gt;
  mesh_width                     stick_color                  &lt;br /&gt;
  min_mesh_spacing               stick_fixed_radius           &lt;br /&gt;
  mouse_limit                    [[stick_nub]]                    &lt;br /&gt;
  mouse_restart_movie_delay      stick_overlap                &lt;br /&gt;
  mouse_scale                    stick_quality                &lt;br /&gt;
  mouse_selection_mode           stick_radius                 &lt;br /&gt;
  movie_delay                    stick_transparency           &lt;br /&gt;
  movie_loop                     stick_valence_scale          &lt;br /&gt;
  multiplex                      stop_on_exceptions           &lt;br /&gt;
  no_idle                        surface_best                 &lt;br /&gt;
  nonbonded_size                 surface_carve_cutoff         &lt;br /&gt;
  normal_workaround              surface_carve_selection      &lt;br /&gt;
  normalize_ccp4_maps            surface_carve_state          &lt;br /&gt;
  normalize_grd_maps             surface_circumscribe         &lt;br /&gt;
  normalize_o_maps               surface_clear_cutoff         &lt;br /&gt;
  nvidia_bugs                    surface_clear_selection      &lt;br /&gt;
  opaque_background              surface_clear_state          &lt;br /&gt;
  [[orthoscopic]]                    surface_color                &lt;br /&gt;
  overlay                        surface_debug                &lt;br /&gt;
  overlay_lines                  surface_miserable            &lt;br /&gt;
  pdb_conect_all                 surface_mode                 &lt;br /&gt;
  pdb_discrete_chains            surface_normal               &lt;br /&gt;
  pdb_echo_tags                  surface_optimize_subsets     &lt;br /&gt;
  pdb_hetatm_sort                surface_poor                 &lt;br /&gt;
  pdb_honor_model_number         surface_proximity            &lt;br /&gt;
  pdb_insertions_go_first        surface_quality              &lt;br /&gt;
  pdb_insure_orthogonal          surface_ramp_above_mode      &lt;br /&gt;
  pdb_literal_names              surface_solvent              &lt;br /&gt;
  pdb_no_end_record              surface_trim_cutoff          &lt;br /&gt;
  pdb_reformat_names_mode        surface_trim_factor          &lt;br /&gt;
  pdb_retain_ids                 surface_type                 &lt;br /&gt;
  pdb_standard_order             suspend_updates              &lt;br /&gt;
  pdb_truncate_residue_name      swap_dsn6_bytes              &lt;br /&gt;
  pdb_unbond_cations             sweep_angle                  &lt;br /&gt;
  pdb_use_ter_records            sweep_mode                   &lt;br /&gt;
  [[pickable]]                       sweep_phase                  &lt;br /&gt;
  png_file_gamma                 sweep_speed                  &lt;br /&gt;
  png_screen_gamma               test1                        &lt;br /&gt;
  power                          test2                        &lt;br /&gt;
  pqr_no_chain_id                text                         &lt;br /&gt;
  presentation                   texture_fonts                &lt;br /&gt;
  presentation_auto_quit         [[transparency]]                 &lt;br /&gt;
  presentation_auto_start        transparency_mode            &lt;br /&gt;
  presentation_mode              transparency_picking_mode    &lt;br /&gt;
  preserve_chempy_ids            triangle_max_passes          &lt;br /&gt;
  pymol_space_max_blue           trim_dots                    &lt;br /&gt;
  pymol_space_max_green          [[two_sided_lighting]]&lt;br /&gt;
  pymol_space_max_red            use_display_lists            &lt;br /&gt;
  pymol_space_min_factor         [[valence]]                      &lt;br /&gt;
  raise_exceptions               valence_default              &lt;br /&gt;
  rank_assisted_sorts            valence_size                 &lt;br /&gt;
  ray_blend_blue                 validate_object_names        &lt;br /&gt;
  ray_blend_colors               virtual_trackball            &lt;br /&gt;
  ray_blend_green                wildcard                     &lt;br /&gt;
  ray_blend_red                  wizard_prompt_mode           &lt;br /&gt;
  ray_color_ramps                wrap_output                  &lt;br /&gt;
&lt;br /&gt;
[[Category:Settings|All Settings]]&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ray_shadow&amp;diff=10002</id>
		<title>Ray shadow</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ray_shadow&amp;diff=10002"/>
		<updated>2006-09-10T04:12:35Z</updated>

		<summary type="html">&lt;p&gt;Tstout: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Turns on/off whether or not PyMOL ray traces shadows.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set ray_shadows,0   # turn off shadows&lt;br /&gt;
set ray_shadows,1   # turn on shadows&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also accepted:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
set ray_shadows,off   # turn off shadows&lt;br /&gt;
set ray_shadows,on    # turn on shadows&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Examples ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Rs0.png|thumb|Ray Shadows Off&lt;br /&gt;
Image:Rs1.png|thumb|Ray Shadows On&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tstout</name></author>
	</entry>
</feed>