From: Diego Gomes (
Date: Fri Dec 09 2022 - 14:14:44 CST

Hi Bill,
here's a way you can do that.

# Functions
proc sasa_by_residue {} {
  # Create a selection for all protein atoms
  set all [atomselect top "protein"]

  # Get unique residue numbers
  set res_list [lsort -unique -integer [$all get residue]]

  # Loop over all residues
  foreach res $res_list {

    # Create selection for current residue
    set sel [atomselect top "residue $res"]

    # Measure sasa for current residue
    set res_sasa [measure sasa 1.4 $all -restrict $sel]

    # Save
    $sel set user $res_sasa
    puts "${res},[format {%0.3f} ${res_sasa}]"

    # clean up inner loop
    $sel delete

  # Clean up
  $all delete
  unset $res_list

# Compute sasa by residue

You may want to color
# Color by SASA
mol modcolor 0 [molinfo top] User
mol colupdate 0 [molinfo top] 1
mol scaleminmax [molinfo top] 0 auto

On Sat, Nov 19, 2022 at 2:35 PM Bill McIntyre <>

> Hello,
> Would someone please tell me if it is possible to use the "measure sasa"
> command to calculate the solvent accessible surface area for each
> individual residue/amino acid in a protein? There is a sasa.tcl script
> available authored by Sajad Falsafi and Zahra Karimi but it returns the
> total surface area of the protein with no breakdown of the surface area
> each individual amino acid contributed to said total.
> Regards,
> Bill McIntyre

Diego Enry B. Gomes, PhD
Department of Physics
Leach Science Center
Auburn University
+1 (334) 559-4016