What do you think of writing a Python interface to Jmol?
It seems to me a lot of people like to use Python. It's the programming language of the average scientist. Now that we have Jmol set up with a sockets interface (Molecular Playground), why not write an interface that would be the entire JmolViewer interface, but via sockets? And then write a Python (or whatever language) API to go along with it? The Python developer would simply add the Jmol.py toolkit along with Jmol.jar and have instant access to (any number of) viewers, a POV-ray generator, a molecular structure analysis engine, structure and surface file readers, callback mechanisms, a customizable interface (possibly even using the signed applet with a local HTML page), the option to run "headless" with no visible viewer, etc., etc.
From a Python viewpoint, it would be just another package. Jmol.py would work something like a database -- you make a connection, configure the connection, make function calls ("queries"), get results -- and the API would handle all the connectivity via sockets.
From a Jmol viewpoint, it would look like Jmol just turned into a Python version.
In effect, rather than writing a PyMol plug-in, what Python developer/user would be doing would be writing a Python program with a Jmol plug-in. Heck, we might even be able to write a PyMol-Jmol API that would enable PyMol plug-ins to be directly adaptable to Jmol, but of course with all the added power, breadth, and flexibility of Jmol. Sort of like the way we were able to port virtually all of Rasmol/Chime capability to Jmol and extend that immensely. (But I would consider that a secondary goal.)
Good idea? Anyone want to work on this? I would definitely want to assemble a team to do this -- I personally have no experience at all with Python. Might even be fundable.
Robert M. Hanson
Professor of Chemistry
St. Olaf College
1520 St. Olaf Ave.
Northfield, MN 55057
If nature does not answer first what we want,
it is better to take what answer we get.
-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900