Function Repository Resource:

MoleculeBuriedResiduesIndex

Source Notebook

Approximate the surface area of a molecule

Contributed by: William Choi-Kim

ResourceFunction["MoleculeBuriedResiduesIndex"][mol]

approximates the internal interface surface area of mol in relative terms.

Details and Options

The input mol must be a Molecule.
The resulting value from ResourceFunction["MoleculeBuriedResiduesIndex"] is not provided in any specific units. The value is only useful when being compared to other values.
ResourceFunction["MoleculeBuriedResiduesIndex"] uses a Monte-Carlo methodology in which a value is approximated by testing a large number of cases. Here, the internal surface area is approximated by distributing a large number of test points throughout the molecule.
MoleculeBuriedResiduesIndex accepts the option "Density", which must be numerical and determines the density of the testing points distributed throughout the molecule.
The internal surface area of a molecule is useful in quantifying "buried residues" - amino acid units that are not exposed to the surrounding solvent. These units (residues) are inversely associated with ASA (solvent accessible surface area), a measure that is significant in many use cases. These include protein folding, drug retargeting, and identifying active sites of enzymes.

Examples

Basic Examples (2) 

Compute the internal surface area of a water molecule:

In[1]:=
ResourceFunction["MoleculeBuriedResiduesIndex"][
 Molecule[Entity["Chemical", "Water"]]]
Out[1]=

Approximate the internal surface area of two different molecules to compare them:

In[2]:=
molecule1 = Molecule[Entity["Chemical", "Caffeine"]];
molecule2 = Molecule[Entity["Chemical", "Water"]];
In[3]:=
ResourceFunction["MoleculeBuriedResiduesIndex"][molecule1]
Out[3]=
In[4]:=
ResourceFunction["MoleculeBuriedResiduesIndex"][molecule2]
Out[4]=

The more complex molecule has greater internal surface area, as expected. See the molecules to understand why caffeine has more internal area than water:

In[5]:=
MoleculePlot3D[molecule1]
Out[5]=
In[6]:=
MoleculePlot3D[molecule2]
Out[6]=

Options (1) 

Density (1) 

Increasing the density (of the distribution of test points in the molecule) will increase accuracy, but also increase time cost:

In[7]:=
testingMolecule = Molecule["trypsin"]
Out[7]=
In[8]:=
AbsoluteTiming /@ {ResourceFunction["MoleculeBuriedResiduesIndex"][
   testingMolecule, Density -> 2],
  ResourceFunction["MoleculeBuriedResiduesIndex"][testingMolecule, Density -> 8]}
Out[8]=

Publisher

William Choi-Kim

Requirements

Wolfram Language 13.0 (December 2021) or above

Version History

  • 1.0.0 – 10 April 2025

Source Metadata

Related Resources

Author Notes

This submission is a part of the author's 2024 WELP project.

License Information