Calculations of densities of solvent or ligands with the
MDAnalysis.analysis.density code can be a powerful way to
obtain a global picture of solvent/ligand behavior in relationship
to, e.g., a protein. Sometimes there are changes in the protein
that lead to a different density but when averaged over the whole
trajectory, the changes in the density are averaged out and are
less clear. It is therefore useful to generate densities only
for parts of the trajectory that correspond to a specific
state of the system.
For our purpose here, a state is a collection of trajectory frames.
Each frame only belongs to a single state.
States can be identified in many difference ways.
For example, we can look at the conformation of the protein itself
and use clustering by protein RMSD (see Project above). But we
can also cluster by ligands or specific sidechains: select
small molecule/ion binding sites or sidechain configurations by a
ligning to a ‘fixed’ reference (e.g. protein) and perform
clustering using the coordinates of the group of interest.
Compute some form of order parameter and assign different states
based on the order parameter (e.g., a distance that describes when
a protein is in an "open" conformation (distance greater than a
cutoff) and a "closed" conformation (distance smaller than a cutoff)),
or a distance that indicates when a small molecule is bound/not bound.
Objectives
Create an analysis class that takes as input a list of states
(e.g., a dict stateID -> list of trajectory frames, or a a list of lists
where state 0 corresponds to list 0, state 1 to list 1, etc...)
and then creates a density for each state (making use of the existing
MDAnalysis.analysis.density.DensityAnalysis; note the frames keyword
of the run() method,
which takes a list of trajectory frames).
Optimize the approach so that you don't have to run DensityAnalysis
separately for each state.
Overview
Calculations of densities of solvent or ligands with the MDAnalysis.analysis.density code can be a powerful way to obtain a global picture of solvent/ligand behavior in relationship to, e.g., a protein. Sometimes there are changes in the protein that lead to a different density but when averaged over the whole trajectory, the changes in the density are averaged out and are less clear. It is therefore useful to generate densities only for parts of the trajectory that correspond to a specific state of the system.
For our purpose here, a state is a collection of trajectory frames. Each frame only belongs to a single state.
States can be identified in many difference ways.
Objectives
frames
keyword of therun()
method, which takes a list of trajectory frames).DensityAnalysis
separately for each state.