[Debichem-devel] Current status of pymol Debian/Ubuntu package

Michael Banck mbanck at debian.org
Wed Jul 23 02:18:19 UTC 2008


Hi Warren,

this is an update on the current status of the pymol package in Debian
and Ubuntu.

The current stable releases of Debian and Ubuntu ship pymol-0.99rc6 and
pymol-1.0r2, respectively (Debian got last released in spring 2007,
Ubuntu in spring 2008).

I have just uploaded pymol-1.1 (congrats on the release, btw) to the
development branch of Debian, so we hope that the next Debian and Ubuntu
releases (both scheduled for fall) will ship pymol-1.1.

While doing this, I updated the package description.  I couldn't really
find a good overview of pymol on http://pymol.sourceforge.net to my
surprise, so this is what I came up with (making it somewhat consistent
with other package description of similar packages in Debian):

****

 PyMOL is a molecular graphics system targetted at medium to large
 biomolecules like proteins. It can generate high-quality publication-ready
 molecular graphics images and animations.
 
 Features include:
  * Visualization of molecules, molecular trajectories and surfaces
    of crystallography data or orbitals
  * Molecular builder and sculptor
  * Internal raytracer and movie generator
  * Fully extensible and scriptable via a python interface
 
 File formats PyMOL can read include PDB, XYZ, CIF, MDL Molfile, ChemDraw,
 CCP4 maps, XPLOR maps and Gaussian cube maps.

**** 

Do you think that is fine?  Any more major features we should add to the
list?

Besides this, there are still a couple of patches we apply to pymol,
which you might want to review and possibly apply.

They are:

*** print some diff if a test suite script fails.  Quite ugly, but
    a bit more informational than just saying "it differs":

--- pymol-1.1/test/run.orig     2006-06-30 00:59:34.000000000 +0200
+++ pymol-1.1/test/run  2006-06-30 01:00:09.000000000 +0200
@@ -94,7 +94,8 @@
                diffs = df.readlines()
                df.close()
                print " run_tests: "+ \
-                  postfx+" DIFFERS over about %d lines." % int(len(diffs)/2)
+                  postfx+" DIFFERS over about %d lines:" % int(len(diffs)/2)
+               print diffs
          else:
             print " run_tests: "+postfx+" is missing."

*** Store povray generated files as .png (not sure this is still needed):

--- pymol-1.1/modules/pymol/povray.py.orig      2006-06-30 01:02:06.000000000 +0200
+++ pymol-1.1/modules/pymol/povray.py   2006-06-30 01:03:42.000000000 +0200
@@ -17,7 +17,7 @@
     import os
     import traceback
 
-    povray_exe = "povray"
+    povray_exe = "povray +FN"

     def render_from_string(header,pov_inp,prefix,width,height,antialias):
         r = None


*** Make Wizards->Demo demos work when installed as package:

--- pymol-1.1/examples/chempy/generate_amber.py 2004-01-03 23:06:05.000000000 +0100
+++ pymol-1.1/examples/chempy/generate_amber.py 2004-01-03 23:07:06.000000000 +0100
@@ -3,8 +3,9 @@
 from chempy import io
 from chempy import protein
 from chempy import protein_amber99
+import os

-model= io.pdb.fromFile("../../test/dat/pept.pdb")
+model= io.pdb.fromFile("/usr/share/pymol/demo/pept.pdb")

 model= protein.generate(model,forcefield=protein_amber99)

--- pymol-1.1/examples/chempy/generate_mmff.py  2004-01-03 23:06:05.000000000 +0100
+++ pymol-1.1/examples/chempy/generate_mmff.py  2004-01-03 23:07:06.000000000 +0100
@@ -4,6 +4,7 @@
 from chempy import protein
 from chempy import protein_mmff
 from chempy import bond_mmff
+import os

 #
 #print 'normal'
@@ -13,7 +14,7 @@
 #print 'c_terminal'
 #protein_mmff.check_sum(protein_mmff.c_terminal)

-model= io.pdb.fromFile("../../test/dat/pept.pdb")
+model= io.pdb.fromFile("/usr/share/pymol/demo/pept.pdb")

 model= protein.generate(model,forcefield=protein_mmff,bondfield=bond_mmff)

--- pymol-1.1/examples/devel/povray01.py        2004-01-03 23:06:05.000000000 +0100
+++ pymol-1.1/examples/devel/povray01.py        2004-01-03 23:07:06.000000000 +0100
@@ -4,7 +4,7 @@
 if not ('pept' in cmd.get_names()):
    cmd.delete('all')
    util.ray_shadows('heavy')
-   cmd.do('load $PYMOL_PATH/test/dat/pept.pdb')
+   cmd.do('load $PYMOL_DATA_PATH/pept.pdb')
    cmd.do('set surface_quality=1')
    cmd.do('show surface;hide lines;')
    cmd.zoom('all',10)
--- pymol-1.1/modules/pymol/wizard/demo.py.orig 2007-07-05 11:53:39.000000000 +0200
+++ pymol-1.1/modules/pymol/wizard/demo.py      2007-07-05 12:19:42.000000000 +0200
@@ -231,7 +231,7 @@
             try:
                 self.cmd.set("suspend_updates",1,quiet=1)
                 self.cmd.disable()
-                self.cmd.load("$TUT/1hpv.pdb")
+                self.cmd.load("$PYMOL_DATA/demo/1hpv.pdb")
                 util.chainbow("1hpv",_self=self.cmd)
                 self.cmd.hide("everything","1hpv")
                 self.cmd.show("cartoon","1hpv")

*** Remove hash-bang from cex.py and apbs_tools.py, assuming they are not
    supposed to get executed stand-alone:

--- pymol-1.1/modules/chempy/cex.py   2002-12-18 18:01:45.000000000 +0100
+++ pymol-1.1/modules/chempy/cex.py    2003-08-29 22:29:30.000000000 +0200
@@ -1,4 +1,3 @@
-#! /usr/bin/env python
 #A* -------------------------------------------------------------------
 #B* This file contains source code for the PyMOL computer program
 #C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific. 
--- pymol-1.1/modules/pmg_tk/startup/apbs_tools.py 2007-12-15 15:49:33.000000000 +0800
+++ pymol-1.1/modules/pmg_tk/startup/apbs_tools.py  2007-12-15 15:51:53.000000000 +0800
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
 
 # APBS TOOLS Copyright Notice
 # ============================


*** Fix importing _cmd:

--- pymol-1.1/modules/pymol/__init__.py       2006-08-30 11:44:52.000000000 +0200
+++ pymol-1.1/modules/pymol/__init__.py        2006-08-30 11:48:51.000000000 +0200
@@ -350,7 +350,7 @@
         _cmd.runpymol(block_input_hook) # only returns if we are running pretend GLUT
 #      from pymol.embed import wxpymol # never returns
 
-    import _cmd
+    from pymol import _cmd
     import cmd
 
     def thread_launch(pa):

*** Fix usage of different python memory APIs:

--- pymol-1.1/contrib/modules/ExtensionClass.c-py152     2008-02-15 12:55:26.000000000 -0500
+++ pymol-1.1/contrib/modules/ExtensionClass.c-py152      2008-03-05 23:12:29.000000000 -0500
@@ -1589,7 +1589,7 @@
       Py_DECREF(self->bases);
     }
   if (((PyExtensionClass*)self->ob_type) != self) Py_XDECREF(self->ob_type);
-  PyMem_DEL(self);
+  PyObject_Del(self);
 }
   
 static PyObject *
@@ -2999,7 +2999,7 @@
   UNLESS(base_dealloced) 
     {
       Py_DECREF(self->ob_type);
-      PyMem_DEL(self);
+      PyObject_Del(self);
     }
 
   PyErr_Restore(t,v,tb);
--- pymol-1.1/contrib/pyopengl/_glumodule.c      2008-02-15 12:55:27.000000000 -0500
+++ pymol-1.1/contrib/pyopengl/_glumodule.c       2008-03-05 23:12:29.000000000 -0500
@@ -117,7 +117,7 @@
 {
     if (op->quad)
        gluDeleteQuadric(op->quad);
-    PyMem_DEL(op);
+    PyObject_Del(op);
 }
 
 static PyObject *gluquadric_getattr(gluQuadricObject * op, char *name)
@@ -198,7 +198,7 @@
 {
     if (op->tess)
        gluDeleteTess(op->tess);
-    PyMem_DEL(op);
+    PyObject_Del(op);
 }

 static PyObject *glutesselator_getattr(gluTesselatorPyObject * op, char *name)
--- pymol-1.1/contrib/pyopengl/_openglmodule.c   2008-02-15 12:55:27.000000000 -0500
+++ pymol-1.1/contrib/pyopengl/_openglmodule.c    2008-03-05 23:12:29.000000000 -0500
@@ -175,7 +175,7 @@

 #include "abstract.h"

-#define PyArray_ClearMemory(op, pitems) PyMem_DEL(pitems)
+#define PyArray_ClearMemory(op, pitems) PyObject_Del(pitems)

 static int PyArray_AsDoubleArray(PyObject ** op, GLdouble ** pitems, int *pn)
 {
@@ -3385,7 +3385,7 @@
     for (i = 0; i < nitems; i++) {
        PyTuple_SET_ITEM(params, i, PyFloat_FromDouble(items[i]));
     }
-    PyMem_DEL(items);
+    PyObject_Del(items);
 #endif                         /* NUMERIC */
     return (PyObject *) params;
 }
--- pymol-1.1/contrib/pyopengl/openglutil.c      2008-02-15 12:55:27.000000000 -0500
+++ pymol-1.1/contrib/pyopengl/openglutil.c       2008-03-05 23:12:29.000000000 -0500
@@ -154,7 +154,7 @@
        }
     }

-    PyMem_DEL(buf);
+    PyObject_Del(buf);

     TIFFFlushData(tif);
     TIFFClose(tif);
@@ -192,7 +192,7 @@
        fwrite(pixelbuffer + i * width * 3, 1, width * 3, fp);

     fclose(fp);
-    PyMem_DEL(pixelbuffer);
+    PyObject_Del(pixelbuffer);

     Py_INCREF(Py_None);
     return Py_None;
@@ -332,7 +332,7 @@
     fprintf(fp, "grestore\n");

     fclose(fp);
-    PyMem_DEL(pixels);
+    PyObject_Del(pixels);

     Py_INCREF(Py_None);
     return Py_None;
@@ -1972,7 +1972,7 @@
 }
 static void PyObjtrackball_dealloc(PyObjtrackball * self)
 {
-    PyMem_DEL(self);
+    PyObject_Del(self);
 }

 static int PyObjtrackball_print(PyObjtrackball * self)
--- pymol-1.1/contrib/pyopengl/openglutil.h      2008-02-15 12:55:27.000000000 -0500
+++ pymol-1.1/contrib/pyopengl/openglutil.h       2008-03-05 23:12:29.000000000 -0500
@@ -78,7 +78,7 @@

 #include "abstract.h"

-#define PyArray_ClearMemory(op, pitems) PyMem_DEL(pitems)
+#define PyArray_ClearMemory(op, pitems) PyObject_Del(pitems)

 static int PyArray_AsDoubleArray(PyObject ** op, GLdouble ** pitems, int *pn)
 {
--- pymol-1.1/contrib/sglite/sglitemodule.c      2008-02-15 12:55:25.000000000 -0500
+++ pymol-1.1/contrib/sglite/sglitemodule.c       2008-03-05 23:12:29.000000000 -0500
@@ -229,7 +229,7 @@

 static void DEL_SgOpsObject(T_SgOps *self)
 {
-  PyMem_DEL(self);
+  PyObject_Del(self);
 }


@@ -829,7 +829,7 @@

 static void DEL_EqMIxObject(T_EqMIx *self)
 {
-  PyMem_DEL(self);
+  PyObject_Del(self);
 }


*** Use $PYMOL_DATA rather than $PYMOL_PATH for importing.py:

--- pymol-1.1/modules/pymol/importing.py.orig     2008-07-09 19:52:38.000000000 +0200
+++ pymol-1.1/modules/pymol/importing.py  2008-07-09 19:53:07.000000000 +0200
@@ -171,7 +171,7 @@
         r = DEFAULT_ERROR

         
-        tables = { 'cmyk' : "$PYMOL_PATH/data/pymol/cmyk.png",
+        tables = { 'cmyk' : "$PYMOL_DATA/cmyk.png",
                       'pymol' : 'pymol',
                       'rgb' : 'rgb' }

 

That's it, the other patches are pretty much Debian-specific.


Thanks again for developing this wonderful product,

Michael Banck, for the Debichem Team



More information about the Debichem-devel mailing list