MDTraj Tutorial¶
MDTraj can read many trajectory formats and returns coordinates in nanometers.
FastSASA expects Angstrom, so convert MDTraj coordinates by multiplying by 10.0.
Install Extras¶
python3 -m pip install ".[analysis]"
Per-Frame SASA¶
import numpy as np
import mdtraj as md
from fastsasa import SasaEngine
from fastsasa_adapters import element_radii
traj = md.load("trajectory.xtc", top="topology.pdb")
positions = np.ascontiguousarray(traj.xyz, dtype=np.float64) * 10.0
radii = element_radii([atom.element.symbol for atom in traj.topology.atoms])
with SasaEngine() as engine:
total = engine.sasa(
positions,
radii,
probe_radius=1.4,
n_points=100,
)
print(total.shape)
Expected output shape:
(n_frames,)
Per-Residue SASA¶
import numpy as np
import mdtraj as md
from fastsasa import sasa
from fastsasa_adapters import element_radii
traj = md.load("trajectory.xtc", top="topology.pdb")
positions = np.ascontiguousarray(traj.xyz, dtype=np.float64) * 10.0
radii = element_radii([atom.element.symbol for atom in traj.topology.atoms])
residues = list(traj.topology.residues)
residue_lookup = {residue: index for index, residue in enumerate(residues)}
residue_ids = np.asarray(
[residue_lookup[atom.residue] for atom in traj.topology.atoms],
dtype=np.int32,
)
result = sasa(
positions,
radii,
residue_ids=residue_ids,
n_residues=len(residues),
)
print(result["residue"].shape)
Expected output shape:
(n_frames, n_residues)
Command-Line Example Scripts¶
python examples/mdtraj_sasa.py trajectory.xtc --topology topology.pdb
python examples/mdtraj_features.py trajectory.xtc --topology topology.pdb \
--interface-a-selection "protein" --interface-b-selection "resname ABU"
Selection Policy¶
Use MDTraj selections to create coordinate subsets or boolean masks. FastSASA does not attempt to reimplement MDTraj's selection language.