Python molecular viewer

Paul McGuire ptmcg at austin.rr.com
Thu Aug 30 03:22:27 EDT 2007


On Aug 29, 8:31 am, Andy Cheesman <Andy.chees... at bristol.ac.uk> wrote:
> Dear People,
>
> I was wondering if people could recommend a simple molecular viewing
> package written in python. I'm working in Theoretical chemistry and I'm
> not after an all-singing dancing molecular rendering package(pymol does
> that rather well) but a program which reads XYZ files and displays
> simple structures which can be rotated in 3D
>
> Thanks
>
> Andy

slut is an OpenGL wrapper that I found to be very intuitive to use,
and comes with some simple "moving ball" animations, but the
animations also can be panned, zoomed, and rotated.  In your case, you
wouldn't need to do the animation, just plot the balls in 3D and then
pan and zoom to your heart's content.

Here is a simple program that plots a series of points on a sphere:

from slut import *

# points on a sphere
data = [
(1.0, 0.0, 0.0),
 (0.945, 0.0, -0.325),
 (0.789, 0.0, -0.613),
 (0.547, 0.0, -0.836),
 (0.246, 0.0, -0.968),
 (-0.083, 0.0, -0.997),
 (-0.402, 0.0, -0.916),
 (-0.677, 0.0, -0.735),
...
 (-0.078, 0.027, 0.997),
 (0.232, -0.080, 0.968),
 (0.517, -0.177, 0.836),
 (0.746, -0.256, 0.613),
 (0.895, -0.307, 0.325),
 (0.945, -0.325, 0.0) ]

from slut import *

class SphereViewer(World):
    def onSetup(self):
        self.width = 400
        self.height = 400
        self.name = "Points on a Sphere"

    def onDraw(self):
        # draw translucent sphere
        glColor4f(0.7, 0.7, 0.7, 0.5)
        sphere(0, 0, 0, 1.0)
        glColor4f(0.3, 0.3, 0.4, 1.0)

        # plot points on surface
        glPointSize(4)
        for d in data:
            point(*d)

        # connect points with path
        glLineWidth(1.5)
        lastd = data[-1]
        for d in data:
            line( *(lastd + d) )
            lastd = d

viewer = SphereViewer()
viewer.run()

And here is a short Wink video showing me working with a simplified
version of this sphere: http://www.geocities.com/ptmcg/python/sphere1.htm.

If you have your molecules' 3D coordinates, you should be able to just
plot them, and then use slut to view the molecule.

-- Paul




More information about the Python-list mailing list