Get SASA#

Computing solvent-accessible surface area (SASA) for atoms and residues.

The function molsysmt.physchem.get_sasa() evaluates solvent-accessible surface areas using numerical rolling-probe sphere algorithms (e.g. Shrake-Rupley / Lee-Richards).

Added in version 1.0.0.

Basic usage#

Let’s compute the solvent-accessible surface area per residue for a protein structure:

import molsysmt as msm
import pyunitwizard as puw
import matplotlib.pyplot as plt
molsys = msm.convert(msm.systems['Trp-Cage']['1l2y.h5msm'])

We compute the SASA per residue group and plot the solvent exposure profile along the peptide sequence:

sasa_groups = msm.physchem.get_sasa(molsys, element='group', structure_indices=0)
sasa_vals = puw.get_value(sasa_groups[0], to_unit='nm**2')
group_names = msm.get(molsys, element='group', name=True)

fig, ax = plt.subplots(figsize=(8, 3.5))
ax.bar(range(len(sasa_vals)), sasa_vals, color='steelblue', edgecolor='black', alpha=0.8)
ax.set_xticks(range(len(sasa_vals)))
ax.set_xticklabels(group_names, rotation=45, fontsize=8)
ax.set_title('Residue Solvent Accessible Surface Area (SASA)')
ax.set_xlabel('Residue')
ax.set_ylabel('SASA (nm$^2$)')
ax.grid(True, linestyle='--', alpha=0.4, axis='y')
plt.tight_layout()
plt.show()
../../../../_images/2019159fab15eeb3c94d6e85efdd5cf779f9c1ddb12ba9ffde8d978e72ad80dd.png

Total macromolecular SASA#

Aggregating at the molecule level yields the total solvent-accessible area of the folded chain:

sasa_total = msm.physchem.get_sasa(molsys, element='molecule', structure_indices=0)
print('Total molecular SASA:', sasa_total[0, 0])
Total molecular SASA: 18.53787966629342 nanometer ** 2