This is a read-only mirror of pymolwiki.org
Difference between revisions of "Ideas"
m |
|||
(One intermediate revision by the same user not shown) | |||
Line 23: | Line 23: | ||
* APBS (electrostatics calculations): Improve the existing plugin. Michael Lerner is currently leading this effort. See [[APBS]] | * APBS (electrostatics calculations): Improve the existing plugin. Michael Lerner is currently leading this effort. See [[APBS]] | ||
* 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] | * 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] | ||
− | * mengine (MMFF small molecule cleanup): work is in progress (Delsci). | + | * <strike>mengine (MMFF small molecule cleanup): work is in progress (Delsci).</strike> |
− | * mpeg_encode (MPEG movie production on Linux, etc.): work is in progress (Delsci). | + | * <strike>mpeg_encode (MPEG movie production on Linux, etc.): work is in progress (Delsci).</strike> |
* GIMP (image manipulation): Streamline & document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals. | * GIMP (image manipulation): Streamline & document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals. | ||
− | * Blender (general-purpose 3D modeling & animation): Streamline & document the process of getting molecular geometry out of PyMOL and into Blender. | + | * <strike>Blender (general-purpose 3D modeling & animation): Streamline & document the process of getting molecular geometry out of PyMOL and into Blender.</strike> http://pymolwiki.org/index.php/Blender |
* Jmol (publishing visualizations inside of web pages): Liason between PyMOL & Jmol projects to develop a shared molecular visualization data model compatible with both applications. | * Jmol (publishing visualizations inside of web pages): Liason between PyMOL & Jmol projects to develop a shared molecular visualization data model compatible with both applications. | ||
* Firefox (plugin): Develop an PyMOL plugin compatible with Firefox. | * Firefox (plugin): Develop an PyMOL plugin compatible with Firefox. | ||
Line 39: | Line 39: | ||
== High-Level Enhancement Ideas (Mostly Python-oriented) == | == High-Level Enhancement Ideas (Mostly Python-oriented) == | ||
− | * Work on [[#More Ideas (Please add your own!)| | + | * Work on [[#More Ideas (Please add your own!)| MolViz]] |
* Develop new plugins which automate routine tasks. | * Develop new plugins which automate routine tasks. | ||
* Improve the Python API documentation. | * Improve the Python API documentation. | ||
Line 54: | Line 54: | ||
== Low-Level Enhancement Ideas (Mostly C-oriented) == | == Low-Level Enhancement Ideas (Mostly C-oriented) == | ||
− | * Provide a "split" view with multiple molecules each in their own pane (already partially implemented). | + | * <strike>Provide a "split" view with multiple molecules each in their own pane (already partially implemented).</strike> |
− | * Add a movie slider similar to that found in Maya, Cinema4D, 3DSMax. | + | * <strike>Add a movie slider similar to that found in Maya, Cinema4D, 3DSMax.</strike> |
* Enable editing of displayed sequence alignments. | * Enable editing of displayed sequence alignments. | ||
* Add multi-line textual annotations | * Add multi-line textual annotations | ||
Line 63: | Line 63: | ||
* Hilite H-bonds, salt bridges, Pi-stacking, Pi-cations, etc. | * Hilite H-bonds, salt bridges, Pi-stacking, Pi-cations, etc. | ||
* Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis. | * Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis. | ||
− | * Improve the ability to animate objects independently when creating movies. | + | * <strike>Improve the ability to animate objects independently when creating movies.</strike> |
* Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.) | * Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.) | ||
* Enumeration and display of low-energy conformers. | * Enumeration and display of low-energy conformers. | ||
Line 83: | Line 83: | ||
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. | 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. | ||
− | * Build an ActiveX Control for PowerPoint and/or Internet Explorer (work is in progress - Delsci) | + | * <strike>Build an ActiveX Control for PowerPoint and/or Internet Explorer (work is in progress - Delsci)</strike> |
− | * Support direct export of Windows Media files (AVI movies). | + | * <strike>Support direct export of Windows Media files (AVI movies).</strike> |
* Create a Windows port with "native" look & feel. <- Could this be done in PyQT or PyGTK?. Then it would look "native", but be cross-platform and not proprietary. | * Create a Windows port with "native" look & feel. <- Could this be done in PyQT or PyGTK?. Then it would look "native", but be cross-platform and not proprietary. | ||
* Integrate directly via Mathematica via MathLink. | * Integrate directly via Mathematica via MathLink. | ||
Line 99: | Line 99: | ||
* Create additional documentation, screen casts, & tutorials. | * Create additional documentation, screen casts, & tutorials. | ||
* Export 3D PDF images. | * Export 3D PDF images. | ||
− | * Add extra "Single Word Selectors" like "nucleic", "protein", "water", "ions", "backbone" (for nucleic acids or proteins), "mainchain", "sidechain" | + | * <strike>Add extra "Single Word Selectors" like "nucleic", "protein", "water", "ions", "backbone" (for nucleic acids or proteins), "mainchain", "sidechain"</strike> |
Revision as of 23:53, 22 December 2009
Ideas for PyMOL Development
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.
Where to Start
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 for GSoC-type efforts since once mistake could potentially to destabilize the entire platform.
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.
Choosing a Topic
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!
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.
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.
Integration Ideas (Linking Out to Useful Open-Source Tools)
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.
- APBS (electrostatics calculations): Improve the existing plugin. Michael Lerner is currently leading this effort. See APBS
- RDKit (cheminformatics, depiction, UFF cleanup, etc.): Lots of potential here, however C++ coding may be necessary for more advanced integration tasks. RDKit home
mengine (MMFF small molecule cleanup): work is in progress (Delsci).mpeg_encode (MPEG movie production on Linux, etc.): work is in progress (Delsci).- GIMP (image manipulation): Streamline & document the process of exporting images from PyMOL into GIMP and preparing them for submission to scientific Journals.
Blender (general-purpose 3D modeling & animation): Streamline & document the process of getting molecular geometry out of PyMOL and into Blender.http://pymolwiki.org/index.php/Blender- Jmol (publishing visualizations inside of web pages): Liason between PyMOL & Jmol projects to develop a shared molecular visualization data model compatible with both applications.
- Firefox (plugin): Develop an PyMOL plugin compatible with Firefox.
- MMTK (molecular mechanics -- Python/flexible): Develop the ability to round-trip molecular systems from PyMOL, into MMTK, and back.
- GROMACS (molecular mechanics -- C/fast) - Maybe some ideas can be shared with this guy. Gromacs GUI
- OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.
- IPython integration (interactive shell): a robust alternative to the PyMOL command line?
- R (statistics): PyMOL a 3D viewer environment for visualizating & manipulating large statistical data sets?
Are there other key open-source packages we might specifically target for integration with PyMOL, either through GSoC or beyond?
High-Level Enhancement Ideas (Mostly Python-oriented)
- Work on MolViz
- Develop new plugins which automate routine tasks.
- Improve the Python API documentation.
- Flesh out the new "from pymol2 import PyMOL" instance-based PyMOL API.
- Develop alternate Tkinter "skins" (for custom OEM-like applications).
- Develop a Tkinter/TOGL widget which holds a PyMOL viewer instance.
- Develop a PyQt widget which holds a PyMOL viewer instance.
- 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.
- Add a plugin for a GUI window with the same functionality as the "Control Panel" window in SwissPDB Viewer.
- Extend and modify the PyMOL command language so as to be compatible with existing RasMol and/or Jmol scripts.
- Enhance the Mutagenesis Wizard in order to support Nucleic acids and/or Sugars.
- Streamline the process of creating movies out of Scenes.
Low-Level Enhancement Ideas (Mostly C-oriented)
Provide a "split" view with multiple molecules each in their own pane (already partially implemented).Add a movie slider similar to that found in Maya, Cinema4D, 3DSMax.- Enable editing of displayed sequence alignments.
- Add multi-line textual annotations
- Support additional annotation object including: arrow, lines, and blobs.
- Add display of secondary structure into the sequence viewer.
- Enable per-object Z clipping (especially in the ray tracer)
- Hilite H-bonds, salt bridges, Pi-stacking, Pi-cations, etc.
- Build in a simple forcefield and energy minimizer suitable for use with Mutagenesis.
Improve the ability to animate objects independently when creating movies.- Incorporate a suite of standard NMR visualizations (restraint violations, per-residue RMS, etc.)
- Enumeration and display of low-energy conformers.
- Automated structure grafting (poor-man's homology modeling).
- Import of alignment files.
- Implement IMD (Interactive Molecular Dynamics) Interface, see http://www.ks.uiuc.edu/Research/vmd/imd/
Difficult C-level Code Refactoring Ideas
- Assemble a test suite which thoroughly exercises the existing code (a prerequisite to major refactoring).
- Catch & handle memory-allocation failures gracefully (instead of crashing).
- Replace PyMOL's memory management & custom containers with a simple runtime object model.
- Separate the View and the Controllers from the Model so that they can all run asynchronously (on multiple cores).
- Enable generalized undo of changes made to the Model.
- Clean up the internal matrix handling code.
Ideas Involving Proprietary APIs
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.
Build an ActiveX Control for PowerPoint and/or Internet Explorer (work is in progress - Delsci)Support direct export of Windows Media files (AVI movies).- Create a Windows port with "native" look & feel. <- Could this be done in PyQT or PyGTK?. Then it would look "native", but be cross-platform and not proprietary.
- Integrate directly via Mathematica via MathLink.
- Further enhance JyMOL (Java-JNI/wrapped PyMOL)
- Integrate with Matlab.
More Ideas (Please add your own!)
- MolViz is a project to incorporate head tracking input into PyMol. This is accomplished through a ImmersiveViz script written in Python to control the molecule's position using the existing PyMol API. Related projects would include:
- Improving the existing ImmersiveViz PyMol plugin for more precise control of the environment.
- Developing new input drivers for the Wiimote form of control. This would require some bluetooth hacking.
- Implementing some other forms of input for head tracking, such as fisheye head tracking, IR webcam tracking, etc (refer to the end of this [video] for a better description).
- Provide a 2D chemical depiction of the current 3D view.
- Spreadsheet view with additional information (e.g. IC50's).
- Create additional documentation, screen casts, & tutorials.
- Export 3D PDF images.
Add extra "Single Word Selectors" like "nucleic", "protein", "water", "ions", "backbone" (for nucleic acids or proteins), "mainchain", "sidechain"