From: Josh Vermaas (
Date: Wed Apr 03 2013 - 12:58:51 CDT

Hi Felipe,

The discrepancy comes from how SASA is calculated. The way the SASA
calculation works is that numsamples random points are picked around
each atom (500 by default), at a distance equal to the "radius" of each
atom, and then the point is checked to see if it is within the srad +
the radius of an atom in the selection. Thus what you run into is that
you get small errors (around 1%) based on where the random samples
happen to be. What you see as a sizeable error is really a measurement
difference of around 40 on a measurements greater than 5800 (<1%). I'd
play around with the number of samples. Increasing it eventually drives
the subtracted difference to zero, but it takes longer to compute. You
might also consider just computing the complex surface area by adding
together the independent measures of chain A and B, subtracting the
combined surface, and dividing by 2. It will still have the errors
brought about by the randomly picked points, but since the seed is
always the same, the "uninteresting" points not on the interface will be
identical and should cancel out exactly, and you are left with an
approximately 1% error on just the interface.

-Josh Vermaas

P.S. Since code is always helpful, this is a short little demonstration
you can run.

set sel [atomselect top "protein and chain A B"]
set A [atomselect top "protein and chain A"]
set B [atomselect top "protein and chain B"]
set n 500
expr { ([measure sasa 1.4 $A -samples $n] + [measure sasa 1.4 $B
-samples $n] - [measure sasa 1.4 $sel -samples $n]) * 0.5 }

On 04/03/2013 11:07 AM, Felipe Merino wrote:
> Dear all,
> I have been having some problems with a quite simple task. I want to
> measure the buried surface of a complex. For that i created the
> following script
> proc complexSasa { complex partner1 } {
> set asaPartner1Free [ measure sasa 1.4 $partner1 ]
> set asaPartner1Complex [ measure sasa 1.4 $complex -restrict
> $partner1 ]
> set complexArea [ expr $asaPartner1Free - $asaPartner1Complex ]
> return $complexArea
> }
> This basically measures how much of the area of the molecule is hidden
> upon complexation. In principle, it should give the same result using
> either one of the partners of the complex. However, i am getting
> significantly different results.
> For instance for for the barnase barstar complex using the following
> mol new 2za4
> set complex [ atomselect top "protein and chain A B"]
> set chainA [ atomselect top "protein and chain A"]
> set chainB [ atomselect top "protein and chain B"]
> complexSasa $complex $chainA
> 754.0234375
> complexSasa $complex $chainB
> 719.96435546875
> So the difference is quite considerable.
> Any ideas where this difference comes from? It is likely that i am
> making a mistake.
> Regards
> Felipe