Sorry if I was unclear. Currently I've got a functioning script that looks for a specific set of interactions in 3D space for each ligand in a pdb. If this interaction exists it gets passed along to a solvent accessible surface area %cutoff to eliminate ligands that are sitting on bulk solvent. I need to distinguish between genuine solvent exposed ligands and those that are sitting on a biological interface that isn't represented in the crystallographic ASU. Loading as a multiplex=1 or grouping alone is insufficient for program to recognize and account for the other molecules and include them in the calculations, hence the create command.

Basically I need a way to load the .pdb1 files as the full biological assembly. I need it recognize if it is a multimer (I was using count_states if loop as that recognition mechanism). If it recognizes that it is a multimer it needs to then pass the multimer into the group/create loop. If it is a monomer it needs to proceed through the rest of the script. This is a PDB datamining thing so it needs to be broad enough to account for any possible oligomer. If there is another way for the program to recognize that there are multimers present that would be great. Count_states was the only criteria I managed to fish out of the wiki/bb archives.

Thanks for the advice,

On Thu, Dec 19, 2013 at 12:20 AM, Tsjerk Wassenaar <> wrote:
Hi Katherine,

You explain some of how you want to do it, but you don't explain what you're trying to do. What is the objective? It may well be that there's an easier way. As a sidenote, create can also make an object with multiple states. Check the help.

Hope it helps,


On Wed, Dec 18, 2013 at 10:57 PM, Katherine Sippel <> wrote:
Hi all,

I'm trying to load biological assemblies into my script. From old bulletin board messages I figured out that multiplex=1 would output the biological assembly as different states and objects. I worked out that would give a single object with multiple states. Then cmd.create() would make one object with one state. Unfortunately if you group a monomer with one state it gives you a selection of 0 atoms. There is a whole bunch of arithmetic on the back end of the script crashes with a divide by zero error for the monomeric ones. I thought I'd be smart and use count_states to build a conditional loop but I don't think I"m using it correctly because it isn't passing the multiple states into the loop.

Is there some requirement that I'm missing or not seeing here?

This might be easier to explain if I snip from scripts...

#Outputs the monomers correctly but doesn't account for the biological assembly so I get false negatives

cmd.set("all_states", 1)
for file in glob("*.pdb1"):
    cmd.load(file,'prot')'allLigands', "het and (not resn HOH)") etc.

Outputs the multimers correctly but gives a divide by zero error for the monomers

cmd.set("all_states", 1)
for file in glob("*.pdb1"):

    cmd.load(file,'prot', multiplex =1)'ens', 'prot'+'*')
    cmd.create('BA', 'ens')'allLigands', "het and (not resn HOH)") etc.
#Outputs the monomers correctly but doesn't pass multimers into the conditional loop. I've also tried moving the before the if loop. That didn't work either.

cmd.set("all_states", 1)
for file in glob("*.pdb1"):
    cmd.load(file,'prot', multiplex=1)
    if cmd.count_states('prot') > 1:'ens', 'prot')
        cmd.create('BA', 'ens')
        cmd.delete('ens')'allLigands', "het and (not resn HOH)") etc.

Any help would be appreciated. I swear this is the last time I'll bother you. Thanks again.

"Nil illegitimo carborundum" - Didactylos

Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
PyMOL-users mailing list (
Info Page:

Tsjerk A. Wassenaar, Ph.D.

"Nil illegitimo carborundum" - Didactylos