[Chimera-users] Python Script to Find Contact Area Between 2 Proteins

Kevin Wang kevinkw.wang at mail.utoronto.ca
Wed Aug 28 08:06:41 PDT 2019

Hi Eric,

Thank you, code is working as intended now. However, I am using this code to analyze a trajectory so it takes a while to run it for each frame. Is there any way I can optimize it to run faster?

From: Eric Pettersen <pett at cgl.ucsf.edu>
Sent: Tuesday, August 27, 2019 6:30 PM
To: Kevin Wang <kevinkw.wang at mail.utoronto.ca>
Cc: chimera-users at cgl.ucsf.edu <chimera-users at cgl.ucsf.edu>
Subject: Re: [Chimera-users] Python Script to Find Contact Area Between 2 Proteins

Hi Kevin,
Those arguments are “surface pieces”.  Each molecular surface has only one “piece” (despite possibly looking like multiple disjoint pieces).  Once you run the “surface” command (generating two molecular surfaces) you can get the p1/p2 arguments with this code fragment:

p1, p2 = [s.surface_piece for s in openModels.list(modelTypes=[MSMSModel])]

Both openModels and MSMSModel are in the “chimera” module, but since your code does a “from chimera import *” you can get away with just the above.


Eric Pettersen
UCSF Computer Graphics Lab

On Aug 27, 2019, at 1:03 PM, Kevin Wang <kevinkw.wang at mail.utoronto.ca<mailto:kevinkw.wang at mail.utoronto.ca>> wrote:


I am writing a python script to find the area between 2 proteins using the contact_area python command below.

def contact_area(p1, p2, d, color = None, offset = None, slab = None,
                 smooth = False, optimize = True):

Is there a specific object for p1 and p2 and if so how do I get it?

My current code is as follows:

import os
import chimera
from Measure import contactarea
from chimera import *

Path = "/Users/kevinwang/desktop/VEGFR_NO_LIGAND/results/clustering/pdbfit/split"

filelist = os.listdir(Path)
for x in filelist:
    #if x.startswith("trp.pdb."):
    if (x == "trp.pdb.00001"):
        print x
        opened = chimera.openModels.open(x, type ="PDB")
        y = contactarea.contact_area('0.1', '0.2', 2.5)
        text_file = open("buriedArea.txt", "w")

The error message I am getting is as follows:

AttributeError: 'str' object has no attribute 'geometry'

  File "/Applications/Chimera.app/Contents/Resources/share/Measure/contactarea.py", line 8, in contact_area
    v1, t1 = p1.geometry

How should I be passing in my arguments?

Chimera-users mailing list: Chimera-users at cgl.ucsf.edu<mailto:Chimera-users at cgl.ucsf.edu>
Manage subscription: http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20190828/7a809d06/attachment.html>

More information about the Chimera-users mailing list