Difference between revisions of "Ideas"

From PyMOLWiki
Jump to navigation Jump to search
Line 3: Line 3:
 
----
 
----
  
=== Ideas for projects. ===
+
== Where to Start ==
  
The initial text is taken from the mail: [http://sourceforge.net/mailarchive/message.php?msg_name=200803072201.m27M1i8k007622%40apollo.hosting4less.com Re: PyMOL Will Pymol participate in Google Summer of Code 2008?]
+
Start with Python and only delve into the C code if absolutely necessary.  Although PyMOL is mostly a C-based application, much of the C code is fragile and unforgiving. One mistake in C can potentially to destabilize the entire platform.   Although refactoring of the C code is an important project goal, such work may not be right for GSoC-type efforts.
  
 +
Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly.  Even when code performance is critical, Python can still serve as an interface layer between external C, C++, or Java code and PyMOL's internal C data structures. 
  
Yes, we do have a long list of suggestions for PyMOL improvements, but many
+
== Choosing a Topic ==
of them require a detailed understanding of PyMOL's fragile C-language
 
internals, the study and modification of which is too much for Summer of
 
Code.  Also, in addition to the ActiveX effort just announced, some of the
 
PyMOL-specific ideas have already been contracted and/or implemented.
 
  
My view is that the obvious low-hanging fruit for Open-Source PyMOL is
+
The best open-source code is often written by an end-users attempting to meet their own pressing needsSo if you have already have a specific interest or need which relates to PyMOL, then we encourage you to follow that up first!
integration with other open-source code.  Since that mostly involves work at
 
the Python level, such projects are well within the reach of students,
 
especially if they have experience with both packages.
 
  
So from where I sit, the obvious open-source candidates are:
+
However, if you are looking for ideas or suggestions, try to seek out enhancements and/or integrations that will impact the largest potential user base.  For example, try to imagine what things would be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so on?
  
* APBS (electrostatics -- improve the current plugin)
+
The ideas presented are organized by category.  At present, integration with other open-source project seems like the area most likely to yield significant benefits, so those ideas are listed first.
* RDKit (cheminformatics, depiction, UFF cleanup, etc.)
+
 
* mengine (MMFF small molecule cleanup)
+
== Integration Ideas ==
* mpeg_encode (MPEG movie production on Linux, etc.)
+
 
* GIMP (image manipulation)
+
In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through simple Wizards, or via Tkinter plugins.
* Blender (general-purpose 3D modeling & animation)
+
 
* Jmol (publishing visualizations inside of web pages)
+
* APBS (electrostatics calculations):  Improve the existing plugin. Michael Lerner is currently leading this effort.  See [[APBS]]
* Firefox (ditto)
+
* RDKit (cheminformatics, depiction, UFF cleanup, etc.):  Lots of potential here, however C++ coding may be necessary.
* MMTK (molecular mechanics -- Python/flexible)
+
* 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.
 +
* 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. [http://www.kde-apps.org/content/show.php/Gromacs+GUI+?content=47665 Gromacs GUI]
 
* 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]
* OpenOffice (escape from the microsoft hegemony)
+
* OpenOffice (escape Microsoft hegemony): Develop an PyMOL plugin.
 +
 
 +
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-based) ==
 +
 
 +
* Develop new plugins which automate common 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.
  
(NOTE: work is already underway for mpeg_encode and mengine...)
+
== Low-Level Enhancement Ideas (Mostly C-based) ==
  
Are there other key open-source packages we might specifically target for
+
== Intense C-level Refactoring Ideas ==
integration with PyMOL, either through SOC or beyond?
 
  
Although there are many niche tools, from a prioritization standpoint,
+
* Assemble a test suite which thoroughly exercises the existing code (prerequisite refactoring).
efforts should focus on integrations that will impact the largest potential
+
* Catch & handle memory-allocation failures gracefully (instead of crashing!).
user base. So what hypothetical integrations would be useful to virtually
+
* Replace PyMOL's memory management & custom containers with a simple runtime object model.
all medicinal chemists, all structural biologists, all movie-makers, all
 
paper-writers, and so on?
 
  
 
----
 
----

Revision as of 16:17, 10 March 2008

PyMOL Ideas Page for Google Summer of Code (GSoC 2008)


Where to Start

Start with Python and only delve into the C code if absolutely necessary. Although PyMOL is mostly a C-based application, much of the C code is fragile and unforgiving. One mistake in C can potentially to destabilize the entire platform. Although refactoring of the C code is an important project goal, such work may not be right for GSoC-type efforts.

Fortunately, the Python interpreter and the PyMOL command and selection languages make it possible to extend PyMOL safely and quickly. Even when code performance is critical, Python can still serve as an interface layer between external C, C++, or Java code and PyMOL's internal C data structures.

Choosing a Topic

The best open-source code is often written by an end-users attempting to meet their own pressing needs. So if you have already have a specific interest or need which relates to PyMOL, then we encourage you to follow that up first!

However, if you are looking for ideas or suggestions, try to seek out enhancements and/or integrations that will impact the largest potential user base. For example, try to imagine what things would be useful to virtually all medicinal chemists, all structural biologists, all movie-makers, all paper-writers, and so on?

The ideas presented are organized by category. At present, integration with other open-source project seems like the area most likely to yield significant benefits, so those ideas are listed first.

Integration Ideas

In most cases, depending on the need, integration can be accomplished through standalone Python scripts, through new PyMOL commands, through simple 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.
  • 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.
  • 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.

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-based)

  • Develop new plugins which automate common 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.

Low-Level Enhancement Ideas (Mostly C-based)

Intense C-level Refactoring Ideas

  • Assemble a test suite which thoroughly exercises the existing code (prerequisite refactoring).
  • Catch & handle memory-allocation failures gracefully (instead of crashing!).
  • Replace PyMOL's memory management & custom containers with a simple runtime object model.

More ideas

  • 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.
  • A plugin for a GUI window with the same functionality as the "Control Panel" window in SwissPDB Viewer.