<?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=Lucajovine</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=Lucajovine"/>
	<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php/Special:Contributions/Lucajovine"/>
	<updated>2026-06-10T03:04:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11854</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11854"/>
		<updated>2010-04-01T05:19:19Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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 (meaning, being able to import/export sessions from one to the other).&lt;br /&gt;
:: yea ([[User:Tstout|tstout]] [[User:Slaw|slaw]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&gt;
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]] [[User:Slaw|slaw]]) / 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]] [[User:Slaw|slaw]]) / 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]] [[User:Slaw|slaw]])&lt;br /&gt;
* Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]] [[User:Slaw|slaw]]) / nay (0)&lt;br /&gt;
* Better tab completion for commands&lt;br /&gt;
:: yea ([[User:Cowsandmilk|Cowsandmilk]] [[User:Tstout|tstout]] [[User:Slaw|slaw]]) /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]] [[User:Slaw|slaw]]) / 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]], [[User:Vcpmartin|Vcpmartin]], [[User:Rpetrenko|rpetrenko]]) / 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 ( [[User:Slaw|slaw]]) / 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 ( [[User:Slaw|slaw]])&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]]  [[User:Slaw|slaw]]) / 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]] [[User:Slaw|slaw]]) / nay (0)&lt;br /&gt;
* Export 3D PDF images.&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]], [[User:Tstout|tstout]]  [[User:Slaw|slaw]]) / nay ([[User:Cowsandmilk|Cowsandmilk]])&lt;br /&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;&lt;br /&gt;
:: yea ( [[User:Slaw|slaw]]) / 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 ( [[User:Slaw|slaw]])&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]] [[User:Slaw|slaw]] ) / 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]], [[User:Lucajovine|Luca Jovine]]) / 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]], [[User:Lucajovine|Luca Jovine]]&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>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11829</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11829"/>
		<updated>2010-01-22T02:14:37Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / 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]]) / 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]]) / 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]]) / nay (0)&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]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11828</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11828"/>
		<updated>2010-01-22T02:13:50Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / 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]]) / 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]]) / 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]]) / nay (0)&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]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11827</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11827"/>
		<updated>2010-01-22T02:12:18Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / 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]]) / 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]]) / 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]]) / nay (0)&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]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11826</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11826"/>
		<updated>2010-01-22T02:11:47Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / 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]]) / nay (0)&lt;br /&gt;
* Automatic electron density map generation either from PDB mmcif files or user-supplied MTZ files&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / 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]]) / nay (0)&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]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11825</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11825"/>
		<updated>2010-01-22T02:03:06Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;br /&gt;
* Keynote plugin&lt;br /&gt;
:: yea ([[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11824</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11824"/>
		<updated>2010-01-22T02:01:09Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]], [[User:Lucajovine|Luca Jovine]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11823</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11823"/>
		<updated>2010-01-22T02:00:14Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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 (0)&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 (0) / 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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11822</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11822"/>
		<updated>2010-01-22T01:59:49Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* Difficult C-level Code Refactoring Ideas */&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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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]]) / nay (0)&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 (0) / 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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11821</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11821"/>
		<updated>2010-01-22T01:59:17Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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]]) / 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]]) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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]]&amp;quot;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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]]) / nay (0)&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 (0) / 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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11820</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11820"/>
		<updated>2010-01-22T01:58:30Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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;
* 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 (0) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]]) / 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 (0) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea (0) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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]]&amp;quot;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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]]) / nay (0)&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 (0) / 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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11819</id>
		<title>Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Ideas&amp;diff=11819"/>
		<updated>2010-01-22T01:57:55Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* 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]]&amp;quot;[[User:Vcpmartin|Vcpmartin]]&amp;quot;) / nay (0)&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 (0)&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]]) / 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 (0) / nay (0)&lt;br /&gt;
* R (statistics): PyMOL a 3D viewer environment for visualizating &amp;amp; manipulating large statistical data sets?&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 (0) / 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 (0) / 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 (0)&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;
&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]]) / nay (0)&lt;br /&gt;
::: Would this then feed back to the structural alignment? [[User:Jedgold|Jedgold]]&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 (0) / nay (0)&lt;br /&gt;
* Enable per-object Z clipping (especially in the ray tracer)&lt;br /&gt;
:: yea ([[User:Gregori|Gregori]]) / 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 (0) / nay (0)&lt;br /&gt;
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.&lt;br /&gt;
:: yea (0) / 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]])&lt;br /&gt;
::: Perhaps a plugin to Modeller instead? [[User:Jedgold|Jedgold]]&lt;br /&gt;
* Import of alignment files.&lt;br /&gt;
:: yea ([[User:Jedgold|Jedgold]]) / 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 (0) / nay (0)&lt;br /&gt;
* Catch &amp;amp; handle memory-allocation failures gracefully (instead of crashing).&lt;br /&gt;
:: yea (0) / 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]]&amp;quot;) / nay (0)&lt;br /&gt;
* Clean up the internal matrix handling code.&lt;br /&gt;
:: yea (0) / 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]]) / nay (0)&lt;br /&gt;
* Integrate with Matlab.&lt;br /&gt;
:: yea (0) / nay ([[User:Aschreyer|Aschreyer]])&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]]) / 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 (0)&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]]) / nay (0)&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 (0) / 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]]) / nay (0)&lt;br /&gt;
* export images in vector format&lt;br /&gt;
:: yea ([[User:Vvostri|Vvostri]]) / nay (0)&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13198</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13198"/>
		<updated>2007-01-26T09:55:49Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== CCEAlign &amp;amp; NumPy Modules Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
PyMOL&amp;gt;run cealign.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
  File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
  File &amp;quot;/usr/local/pymol/scripts/cealign-0.1/cealign.py&amp;quot;, line 59, in ?&lt;br /&gt;
    from ccealign import ccealign&lt;br /&gt;
ImportError: No module named ccealign&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code archive] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;. Then, donwload the [http://www.pymolwiki.org/index.php/Cealign#The_Code CE Align source code archive] (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1048</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1048"/>
		<updated>2007-01-26T09:55:49Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== CCEAlign &amp;amp; NumPy Modules Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
PyMOL&amp;gt;run cealign.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
  File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
  File &amp;quot;/usr/local/pymol/scripts/cealign-0.1/cealign.py&amp;quot;, line 59, in ?&lt;br /&gt;
    from ccealign import ccealign&lt;br /&gt;
ImportError: No module named ccealign&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code archive] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;. Then, donwload the [http://www.pymolwiki.org/index.php/Cealign#The_Code CE Align source code archive] (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13197</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13197"/>
		<updated>2007-01-26T09:49:23Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code archive] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;. Then, donwload the [http://www.pymolwiki.org/index.php/Cealign#The_Code CE Align source code archive] (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1047</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1047"/>
		<updated>2007-01-26T09:49:23Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code archive] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;. Then, donwload the [http://www.pymolwiki.org/index.php/Cealign#The_Code CE Align source code archive] (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install | tee install.log&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13196</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13196"/>
		<updated>2007-01-26T09:47:44Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code archive] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then, donwload the [http://www.pymolwiki.org/index.php/Cealign#The_Code CE Align source code archive] (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1046</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1046"/>
		<updated>2007-01-26T09:47:44Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code archive] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then, donwload the [http://www.pymolwiki.org/index.php/Cealign#The_Code CE Align source code archive] (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13195</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13195"/>
		<updated>2007-01-26T09:44:42Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then, donwload the CE Align archive (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1045</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1045"/>
		<updated>2007-01-26T09:44:42Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code] (currently version 1.0.1), unpack it, change directory to numpy-1.0.1 and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then, donwload the CE Align archive (currently version 0.2), unpack it, change directory to cealign-0.2 and finally install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13194</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13194"/>
		<updated>2007-01-26T09:40:00Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1044</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1044"/>
		<updated>2007-01-26T09:40:00Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13193</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13193"/>
		<updated>2007-01-26T09:38:54Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then, install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1043</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1043"/>
		<updated>2007-01-26T09:38:54Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
==== Syntax ====&lt;br /&gt;
&lt;br /&gt;
CEAlign has the semantic, and syntactic formalism of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign MASTER, TARGET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where a post-condition of the algorithm is that the coordinates of the '''MASTER''' protein are unchanged.  This allows for easier multi-protein alignments.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 cealign 1AUE, 1BZ4&lt;br /&gt;
 cealign 1AUE, 1B68&lt;br /&gt;
 cealign 1AUE, 1A7V&lt;br /&gt;
 cealign 1AUE, 1CPR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will superimpose all the TARGETS onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Multiple Structure Alignments=====&lt;br /&gt;
To use '''cealign''' to do a multiple structure alignment, simple load all your proteins and execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;MASTER&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where '''MASTER''' is the protein to align all others to.&lt;br /&gt;
For example, load the following proteins: 1A15, 1EOT, 1ESR, 1F9R, 1G2S, 1NR4, 1QE6.  Now, execute the command,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in cmd.get_names(&amp;quot;*&amp;quot;): cealign(&amp;quot;1A15&amp;quot;, x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:unali.png|Proteins Unaligned, just loaded into PyMOL.&lt;br /&gt;
Image:ali_all.png|All proteins aligned to 1A15&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.2 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/b/bc/Cealign-0.2.tar.bz2 CE Align v0.2]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/d/d9/Cealign-0.2.zip CE Align v0.2]&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
===2007-01-25===&lt;br /&gt;
CE Align v0.2 released.&lt;br /&gt;
&lt;br /&gt;
Found a &amp;quot;feature&amp;quot; I don't like; so, I fixed it.  The new version of cealign has the formal syntax of&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign MASTER, TARGET&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
and cealign is now guaranteed not to change the coordinates of the '''MASTER''' protein.  This is useful is you want to align 10 structures on top of one.  Before, cealign would center the two molecules; now it just overlaps the TARGET onto the MASTER.&lt;br /&gt;
&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy (as well as CE Align itself) using Apple's python. To do so, first download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. Then, install CE Align as follows: &amp;lt;tt&amp;gt;sudo /usr/bin/python setup.py install&amp;lt;/tt&amp;gt;.&lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13188</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13188"/>
		<updated>2007-01-25T11:35:28Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy using Apple's python. To do so, download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. &lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1038</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1038"/>
		<updated>2007-01-25T11:35:28Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* NumPy Module Not Found */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under [http://www.apple.com/macosx Apple Mac OS X] if (a) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by [http://fink.sourceforge.net/ Fink]'s python executable (/sw/bin/python, currently version 2.5) and (b) you are using [http://delsci.com/rel/099/#MacOSX precompiled versions of PyMOL] (MacPyMOL, PyMOLX11Hybrid or PyMOL for Mac OS X/X11). These executables ignore Fink's python and instead use Apple's - so, in order to run CE Align, one must install NumPy using Apple's python. To do so, download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. &lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13187</id>
		<title>Cealign plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign_plugin&amp;diff=13187"/>
		<updated>2007-01-25T11:11:12Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under Apple Mac OS X if (a) you are using the sponsorised version of PyMOL (MacPyMOL/PyMOLX11Hybrid) and (b) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by Fink's python executable (/sw/bin/python, currently version 2.5). MacPyMOL/PyMOLX11Hybrid ignores Fink's python, and will only use Apple's - so, in order to run CE Align, one must install NumPy using Apple's python. To do so, download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. &lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1037</id>
		<title>Cealign</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Cealign&amp;diff=1037"/>
		<updated>2007-01-25T11:11:12Z</updated>

		<summary type="html">&lt;p&gt;Lucajovine: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This script is a Python implementation of the CE algorithm pioneered by Drs. Shindyalov and Bourne (See References).  It is a fast, accurate structure-based protein alignment algorithm.  There are a few changes from the original code (See Notes), and &amp;quot;fast&amp;quot; depends on your machine and the implementation.  That is, on my machine --- a relatively fast 64-bit machine --- I can align two 400+ amino acid structures in about 0.300 s with the C++ implementation.  In Python however, two 165 amino acid proteins took about 35 seconds!&lt;br /&gt;
&lt;br /&gt;
When coupled to the Kabsch algorithm, this should be able to align any two protein structures, using just the alpha carbon coordinates.&lt;br /&gt;
&lt;br /&gt;
This plugs into PyMol very easily.  See [[Cealign#The_Code|the code]] and [[Cealign#Examples|examples]] for installation and usage.&lt;br /&gt;
&lt;br /&gt;
== Comparison to PyMol ==&lt;br /&gt;
'''Why should you use this?'''&lt;br /&gt;
&lt;br /&gt;
PyMol's structure alignment algorithm is fast and robust.  However, its first step is to perform a sequence alignment of the two selections.  Thus, proteins in the '''twilight zone''' or those having a low sequence identity, may not align well.  Because CE is a structure-based alignment, this is not a problem.  Look at the following example.  The image at LEFT was the result of CE-aligning two proteins (1C0M to 1BCO).  The result is '''88''' aligned (alpha carbons) residues (not atoms) at '''2.78 Angstroms'''.  The image on the RIGHT shows the results from PyMol's align command: an alignment of '''221 atoms''' (not residues) at an RMSD of '''15.7 Angstroms'''.  To make the alignment easier to see, cealign (actually the [[Kabsch]] code) colors the aligned residues differently.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Ce_works.png|Cealign's results&lt;br /&gt;
Image:Pymol_align.png|PyMol's results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
cealign 1cll and i. 42-55, 1ggz and c. A&lt;br /&gt;
cealign 1kao, 1ctq&lt;br /&gt;
cealign 1fao, 1eaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cealign1.png|EASY: 1FAO vs. 1EAZ; 88 residues, 1.16 Ang&lt;br /&gt;
Image:Cealign2.png|EASY: 1CBS vs. 1HMT; 120 residues, 2.07 Ang&lt;br /&gt;
Image:Cealign3.png|MODERATE: 1A15 vs 1B50; 56 residues, 6.67 Ang.&lt;br /&gt;
Image:Align.png|EASY: 1OAN vs. 1S6N; aligned to 2.26 Ang. RMSD.&lt;br /&gt;
Image:Cealign_ex_hard.png|HARD: 1RLW to 1BYN; 104 residues; 3.94 Ang.&lt;br /&gt;
Image:1ten_3hhr.png|HARD: 1TEN vs. 3HHR; 72 residues, 3.13 Ang.&lt;br /&gt;
Image:2SIM_1NSB.png|HARD: 2SIM vs. 1NSB; 280 residues, 5.00 Ang.&lt;br /&gt;
Image:1CEW_1MOL.png|HARD: 1CEW vs. 1MOL; 72 residues, 3.63 Ang.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
'''note:''' Windows installer coming soon.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
# Numpy&lt;br /&gt;
# Python 2.4+ with distutils&lt;br /&gt;
# C compiler&lt;br /&gt;
&lt;br /&gt;
===Directions===&lt;br /&gt;
# uncompress the distribution file '''cealign-VERSION.tgz'''&lt;br /&gt;
# cd cealign-VERSION&lt;br /&gt;
# sudo python setup.py install&lt;br /&gt;
# insert &amp;quot;run DIR_TO_CEALIGN/cealign.py&amp;quot; and &amp;quot;run DIR_TO_CEALIGN/qkabsch.py&amp;quot; into your '''.pymolrc''' file, or just run the two Python scripts by hand.&lt;br /&gt;
# load some molecules&lt;br /&gt;
# run, '''cealign molecule1, molecule2'''&lt;br /&gt;
# enjoy&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
Please unpack and read the documentation.  All comments/questions should be directed to Jason Vertrees (javertre _at_ utmb ...dot... edu)&lt;br /&gt;
&lt;br /&gt;
=== Version 0.1 ===&lt;br /&gt;
* BZ2 File [http://www.pymolwiki.org/images/a/a9/Cealign-0.1.tar.bz2 CE Align v0.1]&lt;br /&gt;
* ZIP File [http://www.pymolwiki.org/images/0/0c/Cealign-0.1.zip CE Align v0.1]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
===2007-01-17===&lt;br /&gt;
CE Align V0.1 released.&lt;br /&gt;
&lt;br /&gt;
===2007-01-11===&lt;br /&gt;
The first version of the C-module code is complete.  I fixed handling (multiple) missing residues, the centering problem, and the problem of multiple chains.  I'll package and provide the code soon.&lt;br /&gt;
&lt;br /&gt;
===2007-01-10===&lt;br /&gt;
Trying to remedy missing residues.  If a user's selections are '''protA and i. 10-20''' and '''prot2 and i. 10-20''', and if prot2 is missing residue 14, the SVD is undefined/inappropriate.  I have to weed out residues that don't have partners in the PDB file.  Alignments do this implicitly since the XYZ values it sees are only the ones with coordinates.  Also, CE only works on individual chains.  If someone can find a consistent method to map residues and chains to ints and then back to residues and chains -- that might work.  Ha!  &lt;br /&gt;
&lt;br /&gt;
If more than a week lapses after this comment, I'll just wrap up the code and post the first version.  There seems to be some interest in this plugin, so the more eyes the easier it may be to fix the bugs.  I will also need testers for the Mac and Windows editions.&lt;br /&gt;
&lt;br /&gt;
=== 2007-01-08===&lt;br /&gt;
'''Yeah!'''&lt;br /&gt;
The C code that plugs into PyMol has been completed.  It's a little slower than the plain C++ code I wrote, but that's what you get when passing data from PyMol to Python to C, fiddle with it,  pass it back to Python to PyMol for some more quick math.  The alignment times for the two proteins mentioned below (1B50 and 1C0M) on my machine with the new C module is about 1-3 second (with a full CPU load for other intensive tasks running in the background; this shows great improvement over the pure Python alignment times).  Once the code is cleaned up (and I'm not too embarrassed to post it) and some bugs are worked out, I'll post it. The current bugs are: &lt;br /&gt;
# Some alignments don't center right&lt;br /&gt;
# Missing residues cause problems&lt;br /&gt;
# Memory leaks galore, I'm sure&lt;br /&gt;
&lt;br /&gt;
The code consists of:&lt;br /&gt;
* qkabsch.py&lt;br /&gt;
* cealign.py&lt;br /&gt;
* ccealignmodule.c&lt;br /&gt;
* ccealignmodule.h&lt;br /&gt;
* setup.py&lt;br /&gt;
&lt;br /&gt;
Also, I provide the option of aligning based solely upon RMSD or upon the better CE-Score.  See the '''References''' for information on the '''CE Score'''.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Post your problems/solutions here.&lt;br /&gt;
&lt;br /&gt;
=== LinAlg Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parser.py&amp;quot;, line 285, in parse&lt;br /&gt;
parsing.run_file(exp_path(args[nest][0]),pymol_names,pymol_names)&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/pymol/parsing.py&amp;quot;, line 407, in run_file&lt;br /&gt;
execfile(file,global_ns,local_ns)&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
File &amp;quot;/usr/lib/python2.4/site-packages/numpy/__init__.py&amp;quot;, line 40, in ?&lt;br /&gt;
import linalg&lt;br /&gt;
ImportError: No module named linalg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': You do not have the linear algebra module installed (or Python can't find it) on your machine.  One workaround is to install [http://www.scipy.org/ Scientific Python].  Another is to reinstall the Numpy package from source, ensuring that you have the necessary requirements for the linear algebra module (linpack, lapack, fft, etc.).&lt;br /&gt;
&lt;br /&gt;
=== NumPy Module Not Found ===&lt;br /&gt;
'''Problem''': Running CE Align gives the following error message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
run qkabsch.py&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parser.py&amp;quot;, line 297, in parse&lt;br /&gt;
File &amp;quot;/home/local/warren/MacPyMOL060530/build/Deployment/MacPyMOL.app/pymol/modules/pymol/parsing.py&amp;quot;, line 408, in run_file&lt;br /&gt;
File &amp;quot;qkabsch.py&amp;quot;, line 86, in ?&lt;br /&gt;
import numpy&lt;br /&gt;
ImportError: No module named numpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This problem occurs under Apple Mac OS X if (a) you are using the sponsorised version of PyMOL (MacPyMOL/PyMOLX11Hybrid) and (b) the Apple's python executable on your machine (/usr/bin/python, currently version 2.3.5) is superseded by Fink's python executable (/sw/bin/python, currently version 2.5). MacPyMOL/PyMOLX11Hybrid ignores Fink's python, and will only use Apple's - so, in order to run CE Align, one must install NumPy using Apple's python. To do so, download the [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 Numpy source code], unpack it and specify the full path to Apple's python executable during installation: &amp;lt;tt&amp;gt;/usr/bin/python setup.py install&amp;lt;/tt&amp;gt;. &lt;br /&gt;
[[User:Lucajovine|Luca Jovine]] 05:11, 25 January 2007 (CST)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Text taken from PubMed and formatted for the wiki.  The first reference is the most important for this code.&lt;br /&gt;
&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''Protein structure alignment by incremental combinatorial extension (CE) of the optimal path.'''  ''Protein Eng.'' 1998 Sep;11(9):739-47.  PMID: 9796821 [PubMed - indexed for MEDLINE]&lt;br /&gt;
# Jia Y, Dewey TG, Shindyalov IN, Bourne PE. '''A new scoring function and associated statistical significance for structure alignment by CE.'''  ''J Comput Biol.'' 2004;11(5):787-99. PMID: 15700402 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Pekurovsky D, Shindyalov IN, Bourne PE. '''A case study of high-throughput biological data processing on parallel platforms.'''  ''Bioinformatics.'' 2004 Aug 12;20(12):1940-7. Epub 2004 Mar 25.  PMID: 15044237 [PubMed - indexed for MEDLINE]&lt;br /&gt;
#  Shindyalov IN, Bourne PE. '''An alternative view of protein fold space.'''  ''Proteins.'' 2000 Feb 15;38(3):247-60.  PMID: 10713986 [PubMed - indexed for MEDLINE]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The CEAlign and all its subprograms that I wrote, are released under the open source Free BSD License (BSDL).&lt;/div&gt;</summary>
		<author><name>Lucajovine</name></author>
	</entry>
</feed>