On Tue, 7 Sep 2004, Warren DeLano wrote:

> In relation to this, I just noticed something very important:
>
> If you "set auto_zoom, off" before loading a series of structures, you'll
> boost PyMOL's loading performance dramatically: by 10X at least...perhaps
> much more.   Just zoom once manually after everything is loaded in.
>

That's great!

I meant to chime in earlier .. I have a bunch of ugly scripts that

 - create objects 1 through N
   (I found 50 to be a good number for both my laptop (Linux+256MM of
    memory) and our SGIs (IRIX + something like 512MB))
 - save them to a file
 - remove/delete everything
 - load that file (now the first N objects are all one object)
 - create another N objects, etc.

I poked around a bit to see if there was anything obvious that I could
speed up in PyMOL's guts, realized once again how big PyMOL's guts are,
wrote my ugly scripts and forgot about it.  I'm looking forward to trying
out the auto_zoom thing in the morning!

thanks,

-michael

--
This isn't a democracy;|                        _  |Michael Lerner
 it's a cheer-ocracy.  | ASCII ribbon campaign ( ) |   Michigan
-Torrence,  Bring It On|  - against HTML email  X  |  Biophysics
                       |                       / \ | mler...@umich

> cmd.set("zoom","off")
> # now load your structures
> ...
> # now zoom
> cmd.zoom()
>
> This change makes it possible to load hundreds of structures containing
> hundreds of thousands of atoms in a reasonable amount of time.  For example,
> on my dual 1 GB G5 with Shark-optimized G5 beta code, I loaded 800 PDB
> structures containing a total of 1.4 million atoms in just over 426 seconds
> -- apparently the situation isn't nearly as bad as I'd feared.
>
> Cheers,
> Warren
> --
> mailto:war...@delsci.com
> Warren L. DeLano, Ph.D.
> Principal Scientist
> DeLano Scientific LLC
> Voice (650)-346-1154
> Fax   (650)-593-4020
>
>
> > -----Original Message-----
> > From: Ben Allen [mailto:benal...@caltech.edu]
> > Sent: Tuesday, September 07, 2004 2:48 PM
> > To: Warren DeLano
> > Cc: pymol-users@lists.sourceforge.net
> > Subject: Re: [PyMOL] long loading times as the number of
> > existing objects increases
> >
> > Warren-
> > Thanks for your prompt response!
> > Given the fundamental issues you mentioned, I think I will
> > change my script so that it loads files only when they are
> > needed and deletes the associated objects when they are no
> > longer being displayed. Initially, I rejected this solution
> > as less efficient, but apparently the specific situation with
> > pymol actually makes it more efficient!
> >
> > Although the current version of my script uses a lot of
> > outside information to determine which files are loaded, how
> > they are colored, and how they are aligned (and so I haven't
> > included it), the following illustrates what I'm talking about:
> >
> > #!/usr/bin/env python
> >
> > from glob import glob
> > from time import time
> >
> > if __name__ == 'pymol':
> > from pymol import cmd
> > t1 = time()
> > for pdb in glob('*.pdb'):
> > print pdb
> > cmd.load(pdb)
> > t2 = time()
> > print t2-t1
> >
> > If (from pymol) I cd to a directory that has 50 pdb files and
> > run this script, it takes about 105 sec to complete. If I
> > include simple alignment and color commands, as follows:
> >
> > #!/usr/bin/env python
> >
> > from glob import glob
> > from time import time
> >
> > if __name__ == 'pymol':
> > from pymol import cmd
> > t1 = time()
> > objects = []
> > for pdb in glob('*.pdb'):
> > print pdb
> > cmd.load(pdb)
> > objects.append(pdb[:-4])
> > cmd.fit(objects[-1]+' and name ca',objects[0]+' and name ca')
> > cmd.color('wheat',objects[-1]+' and elem c')
> > t2 = time()
> > print t2-t1
> >
> > , it still takes same amount of time as before. This is only
> > one data point (50 structures), because I didn't want to
> > repeat the benchmarks for larger sets of structures, but it
> > seems to indicate that the limiting step is the actual
> > loading of the pdb files, and not the subsequent
> > aligning/coloring steps.
> >
> > Thanks again for letting me know which direction I should go.
> > I'll let you know if I get any insight into the origin of the
> > original issue.
> >
> > -Ben
> >
> > On Sep 7, 2004, at 11:51 AM, Warren DeLano wrote:
> >
> >
> >
> >     Ben,
> >
> >     Thanks for the great benchmarks! PyMOL is definitely
> > showing non-linear
> >     behavior when it comes to loading a lot of objects...I
> > don't know why this
> >     is exactly, but I can tell you that I didn't originally
> > envision (and thus
> >     optimize PYMOL for) loading of so many objects.
> >
> >     As it currently stands, there are a number of places
> > where PyMOL does things
> >     using lists when it should be using hashes, and there
> > are many tasks (such
> >     as selecting of atoms) that are linearly dependent (or
> > worse) on the total
> >     number of atoms and coordinate sets present in the
> > system. All of these
> >     issues will be addressed in time, but it may take a
> > considerable work to
> >     correct them. Unfortunately, these are more than just
> > bugs -- they are
> >     limitations in the original design. Such limitations
> > are now the bane of my
> >     existence, my dreams are filled with questions of "How
> > do we fix or improve
> >     the software, without breaking existing PyMOL usage?"
> > Remodeling an
> >     airplane full of passengers while you're flying it is
> > much more challenging
> >     than when it is empty and on the ground. : )
> >
> >     My current advice is to find creative ways of limiting
> > the total number of
> >     atoms and objects loaded into PyMOL at one time. One
> > way to do this is to
> >     create subsets which just contain those atoms you'd
> > like to see. Another
> >     approach is to run multiple PyMOL instances simultaneously.
> >
> >     Cheers,
> >     Warren
> >
> >     PS. It would be great if you could send us one of your
> > more challenging
> >     example scripts to use as a test-case for improvement
> > -- and if you do spot
> >     simple bottlenecks in the code, such information could
> > be very helpful.
> >
> >     --
> >     mailto:war...@delsci.com
> >     Warren L. DeLano, Ph.D.
> >     Principal Scientist
> >     DeLano Scientific LLC
> >     Voice (650)-346-1154
> >     Fax (650)-593-4020
> >
> >
> >
> >
> >             -----Original Message-----
> >             From: pymol-users-ad...@lists.sourceforge.net
> >
> > [mailto:pymol-users-ad...@lists.sourceforge.net] On Behalf Of
> >             Ben Allen
> >             Sent: Tuesday, September 07, 2004 10:32 AM
> >             To: pymol-users@lists.sourceforge.net
> >             Subject: [PyMOL] long loading times as the
> > number of existing
> >             objects increases
> >
> >             I have a situation in which I need to load a
> > large number of
> >             separate pdb files into a single pymol session. In this
> >             case, the number is ~150, but it could
> > potentially be more.
> >             However, the amount of time required to load a
> > file appears
> >             to be strongly dependent on the number of files already
> >             loaded. For example:
> >
> >             # of structures loaded time to load all
> > structures (seconds)
> >             5 0.82
> >             10 2.49
> >             20 11.05
> >             30 29.85
> >             40 62.48
> >             50 115.25
> >             60 189.79
> >             70 302.67
> >             80 432.82
> >             90 589.23
> >
> >             unfortunately, this means that to load 150
> > structures takes
> >             over an hour. I observe this behavior whether I
> > am loading
> >             the structures all at once using a python
> > script, or one at a
> >             time. In both cases, I am using the cmd.load()
> > api function,
> >             but the built-in load command gives similar
> > results. The
> >             structures I am loading are (nearly) identical:
> >             each has 263 residues (in a single chain); each
> > individual
> >             pdb file is about 215KB.
> >
> >             I am running this on a dual 2.0 GHz G5 system
> > with 1.5 GB
> >             memory. The long loading times are consistent
> > between the
> >             two versions of pymol I have installed: OSX/X11 hybrid
> >             version 0.97 and MacPyMol version 0.95.
> >             During the long loading times, there is plenty
> > of memory
> >             available, but the processor load stays at 50%
> > (i.e. one
> >             processor on my machine is fully loaded throughout).
> >
> >             My gut feeling is that this situation should
> > not be, but I
> >             don't yet understand the structure of the code
> > well enough to
> >             debug it. Can anyone shed light on this issue?
> >
> >             Thanks in advance,
> >             Ben Allen
> >
> >
> >
> >
> >             -------------------------------------------------------
> >             This SF.Net email is sponsored by BEA Weblogic
> > Workshop FREE
> >             Java Enterprise J2EE developer tools!
> >             Get your free copy of BEA WebLogic Workshop 8.1 today.
> >             http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
> >             _______________________________________________
> >             PyMOL-users mailing list
> >             PyMOL-users@lists.sourceforge.net
> >             https://lists.sourceforge.net/lists/listinfo/pymol-users
> >
> >
> >
> >
> >
> >
> >
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by BEA Weblogic Workshop
> FREE Java Enterprise J2EE developer tools!
> Get your free copy of BEA WebLogic Workshop 8.1 today.
> http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
> _______________________________________________
> PyMOL-users mailing list
> PyMOL-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pymol-users
>
>
>

Reply via email to