Trajectory Analysis Quick Reference

You can execute various trajectory analyzers in three different environments:

  1. Maestro’s Trajectory Player
  2. The analyze_simulation.py script, which reads an st2 file containing a list of analyzers and their parameters
  3. The Schrödinger Python API

 

Type

Trajectory Player

st2 file contents

Python API

Required for all analyzers

  • Import output CMS into Maestro
  • Double-click ‘T’ next to the entry name
Keywords = [
{Analyzer1}
{Analyzer2}
]
from schrodinger.application.desmond.packages import topo
from schrodinger.application.desmond.packages import traj_util
from schrodinger.application.desmond.packages import analysis

msys_model, cms_model, tr =
     traj_util.read_cms_and_traj("example-out.cms")

Distance

  • Measure distance in Maestro Workspace
  • Plot → Measurements → Currently in Workspace
{Distance = { 
	a1 = 24
	a2 = 115
  }
}
dist = analysis.Distance(msys_model, cms_model, 24, 115)
results = analysis.analyze(tr, dist)

Angle

  • Measure angle in Maestro Workspace
  • Plot → Measurements → Currently in Workspace
{Angle = { 
	a1 = 24
	a2 = 115
	a3 = 127
  }
}
angle = analysis.Angle(msys_model, cms_model, 24, 115, 127)
results = analysis.analyze(tr, angle)

Dihedral

  • Measure dihedral in Maestro Workspace
  • Plot → Measurements → Currently in Workspace
{Dihedral = { 
	a1 = 24
	a2 = 115
	a3 = 127
	a4 = 131
  }
}
dihedral = analysis.Torsion(msys_model, cms_model,
				24, 115, 127, 131)
results = analysis.analyze(tr, dihedral)

Ligand RMSD

  • Select ligand in Workspace
  • Plot → Descriptors → RMSD
{RMSD = {
	ASL = "ligand"
	Frame = 0
	Type = "Ligand"
   }
}
ref_frame = 0
ligand_aids = cms_model.select_atom("ligand")
ligand_gids = topo.aids2gids(cms_model, ligand_aids,
		include_pseudoatoms=False)
ligand_ref_pos = tr[ref_frame].pos(ligand_gids)
lig_rmsd = analysis.LigandRMSD(msys_model, cms_model,
		ligand_aids, ligand_ref_pos)
results = analysis.analyze(tr, lig_rmsd)

Ligand RMSD;

align on protein

backbone

  • Select ligand in Workspace
  • Plot → Descriptors → RMSD Settings → set Other atoms to “protein and backbone”
  • Plot → Descriptors → RMSD
{RMSD = {
	ASL = "ligand"
	FitBy = "protein
		and backbone"
	Frame = 0
	Type = "Ligand"
   }
}
ref_frame = 0
ligand_aids = cms_model.select_atom("ligand")
ligand_gids = topo.aids2gids(cms_model, ligand_aids,
		include_pseudoatoms=False)
ligand_ref_pos = tr[ref_frame].pos(ligand_gids)
protein_aids = cms_model.select_atom("protein and backbone")
protein_gids = topo.aids2gids(cms_model, protein_aids,
		include_pseudoatoms=False)
protein_ref_pos = tr[ref_frame].pos(protein_gids)
lig_rmsd = analysis.LigandRMSD(msys_model, cms_model,
		ligand_aids, ligand_ref_pos,
		fit_aids=protein_aids,
		fit_ref_pos=protein_ref_pos)
results = analysis.analyze(tr, lig_rmsd)

Protein

backbone RMSD

  • Select protein backbone in Workspace
  • Plot → Descriptors → RMSD
{RMSD = {
	ASL = "backbone"
	Frame = 0
   }
}
ref_frame = 0
protein_aids = cms_model.select_atom("backbone")
protein_gids = topo.aids2gids(cms_model, protein_aids,
		include_pseudoatoms=False)
protein_ref_pos = tr[ref_frame].pos(protein_gids)
protein_rmsd = analysis.RMSD(msys_model, cms_model,
		protein_aids, protein_ref_pos)
results = analysis.analyze(tr, protein_rmsd)

Protein

Backbone

RMSF

  • Select protein backbone in Workspace
  • Plot → RMSF → Per Residue
{RMSF = {
	ASL = "backbone"
	Frame = 0
	Tab = "p_rmsf_tab"
   }
}
ref_frame = 0
protein_aids = cms_model.select_atom("backbone")
protein_gids = topo.aids2gids(cms_model, protein_aids,
		include_pseudoatoms=False)
protein_ref_pos = tr[ref_frame].pos(protein_gids)
protein_rmsf = analysis.ProteinRMSF(msys_model, cms_model,
		protein_aids,
		protein_aids,
		protein_ref_pos)
results = analysis.analyze(tr, protein_rmsf)

Ligand atoms

RMSF

  • Select protein backbone in Workspace
  • Plot → RMSF → Per Atom
{RMSF = {
	ASL = "ligand"
	Frame = 0
   }
}
ref_frame = 0
ligand_aids = cms_model.select_atom("ligand")
lig_rmsf = analysis.RMSF(msys_model, cms_model, ligand_aids,
		None, None)
results = analysis.analyze(tr, lig_rmsf)

Radius of

gyration of a

ligand

  • Select ligand in Workspace
  • Plot → Descriptors → Radius of Gyration
{Rad_Gyration = {
	ASL = "ligand"
   }
}
rgyr = analysis.Gyradius(msys_model, cms_model,
		asl="ligand")
results = analysis.analyze(tr, rgyr)

Molecular

surface area of a

ligand

  • Select ligand in Workspace
  • Plot → Descriptors → Molecular Surface Area
{Molecular_Surface_Area = {
	ASL = "ligand"
   }
}
molsa = analysis.MolecularSurfaceArea(msys_model, cms_model,
		"ligand")
results = analysis.analyze(tr, molsa)

Polar surface

area of a ligand

  • Select ligand in Workspace
  • Plot → Descriptors → Polar Surface Area
{Polar_Surface_Area = {
	ASL = "ligand"
   }
}
psa = analysis.PolarSurfaceArea(msys_model, cms_model,
		"ligand")
results = analysis.analyze(tr, psa)

Solvent

Accessible

surface area of a

ligand

  • Select ligand in Workspace
  • Plot → Descriptors → Solvent Accessible Surface Area
{SA_Surface_Area = {
	ASL = "ligand"
	Exclude_ASL = "water"
   }
}
sasa = analysis.SolventAccessibleSurfaceArea(
		msys_model, cms_model, "ligand", exclude_asl="water")
results = analysis.analyze(tr, sasa)

Count the

number of

hydrogen bonds

between protein

and a ligand

  • Plot → Interaction Counts→ Hydrogen Bonds
{HBonds = {
	ASL1 = "protein"
	ASL2 = "ligand"
   }
}
hbonds = analysis.HydrogenBondFinder(msys_model, cms_model,
		"protein", "ligand")
results = analysis.analyze(tr, hbonds)