IMP logo
IMP Reference Guide  2.6.0
The Integrative Modeling Platform
IMP::pmi Namespace Reference

Python classes to represent, score, sample and analyze models. More...

Detailed Description

Python classes to represent, score, sample and analyze models.

This module contains a variety of high-level Python classes to simplify the construction of a modeling protocol in IMP. One recent use of PMI is the modeling of the Nup84 subcomplex of the nuclear pore complex. Several other applications can be seen at the IMP systems page.

This module is still under heavy development, and should be considered experimental.

See also the PMI changelog.

Getting started with PMI

The objective of PMI is to make it as easy as possible to use the powerful representation, scoring, and sampling tools within IMP (and to add some cool analysis functionality) for common modeling problems. Most PMI classes wrap multiple IMP classes and functions that are commonly combined. While this greatly improves usability, it can reduce flexibility. Let us know if you want to do something not currently supported.

The typical flow of a PMI modeling script is as follows:

  • Topology: create a System, States, Molecules, add structure and representation
  • DegreesOfFreedom: setup rigid bodies, flexible beads, and other constraints.
  • Restraints: restrain your system with theoretical or experimental data
  • Sample your system with replica exchange (including Monte Carlo or Molecular Dynamics or both)

Here are some examples to get you started

Automating model construction

We have implemented the BuildSystem macro for more easily setting up large systems. This class reads in structure data, creates representations, and sets some basic degrees of freedom.

Multi-scale representation in PMI

One can create multiple simultaneous representations in PMI. Here is a brief overview:

  • beads: Groups of residues. The "resolution" here is the number of residues per bead (except resolution 0, which corresponds to atomic resolution). For regions with known structure, these are created by averaging along the backbone. Otherwise they are spheres with the approximately correct radius for unstructured protein.
  • densities: These are approximated electron density, in the form of Gaussians. For structured regions we fit a Gaussian Mixture Model (GMM) to the atomic positions. The key number here is residues_per_component: lower number means more approximate. Currently this representation is only used in the GaussianEMRestraint but we plan to use them for excluded volume, etc.
  • ideal helices: These are actually resolution=1 bead representations at the approximate locations of a helix.

See a longer discussion of resolutions here.

Check out some examples or systems that use PMI.

Author(s): Riccardo Pellarin, Charles Greenberg, Daniel Saltzberg, Peter Cimermancic, Ben Webb, Daniel Russel, Elina Tjioe, Seung Joong Kim, Max Bonomi, Yannick Spill

Maintainers: Riccardo Pellarin, Charles Greenberg, Daniel Saltzberg

License: LGPL This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Publications:

Namespaces

 analysis
 Tools for clustering and cluster analysis.
 
 dof
 Create movers and setup constraints for PMI objects.
 
 io
 Utility classes and functions for reading and storing PMI files.
 
 macros
 Protocols for sampling structures and analyzing them.
 
 nonmaintained
 Nonmaintained code.
 
 output
 Classes for writing output files and processing them.
 
 representation
 Representation of the system.
 
 restraints
 Classes to handle different kinds of restraints.
 
 samplers
 Sampling of the system.
 
 tools
 Miscellaneous utilities.
 
 topology
 Set of python classes to create a multi-state, multi-resolution IMP hierarchy.
 

Classes

class  CompositeRestraint
 A restraint for ambiguous cross-linking MS data and multiple state approach. More...
 
class  MembraneRestraint
 Membrane Restraint. More...
 
class  Resolution
 Add resolution to a particle. More...
 
class  SigmoidRestraintSphere
 Simple sigmoidal score calculated between sphere surfaces. More...
 
class  Symmetric
 Add symmetric attribute to a particle. More...
 
class  TransformMover
 Modify the transformation of a rigid body. More...
 
class  Uncertainty
 Add uncertainty to a particle. More...
 

Functions

RestraintSetcreate_elastic_network (const Particles &ps, Float dist_cutoff, Float strength)
 Create an elastic network restraint set. More...
 
Float get_bipartite_minimum_sphere_distance (const IMP::core::XYZRs &m1, const IMP::core::XYZRs &m2)
 
bool get_is_canonical (atom::Hierarchy h)
 Walk up a PMI2 hierarchy/representations and check if the root is named System. More...
 
Floats get_list_of_bipartite_minimum_sphere_distance (const ParticlesTemps &pss)
 
std::string get_molecule_name_and_copy (atom::Hierarchy h)
 Walk up a PMI2 hierarchy/representations and get the "molname.copynum". More...
 
atom::Hierarchy get_parent_representation (atom::Hierarchy h)
 Get the parent, or if non-tree Representation get the fake parent. More...
 

Standard module functions

All IMP modules have a set of standard functions to help get information about the module and about files associated with the module.

std::string get_module_version ()
 
std::string get_module_name ()
 
std::string get_data_path (std::string file_name)
 Return the full path to one of this module's data files. More...
 
std::string get_example_path (std::string file_name)
 Return the full path to one of this module's example files. More...
 

Function Documentation

RestraintSet* IMP::pmi::create_elastic_network ( const Particles &  ps,
Float  dist_cutoff,
Float  strength 
)

Create an elastic network restraint set.

Definition at line 23 of file utilities.h.

+ Here is the call graph for this function:

std::string IMP::pmi::get_data_path ( std::string  file_name)

Return the full path to one of this module's data files.

To read the data file "data_library" that was placed in the data directory of this module, do something like

std::ifstream in(IMP::pmi::get_data_path("data_library"));

This will ensure that the code works both when IMP is installed or if used via the setup_environment.sh script.

Note
Each module has its own data directory, so be sure to use this function from the correct module.
std::string IMP::pmi::get_example_path ( std::string  file_name)

Return the full path to one of this module's example files.

To read the example file "example_protein.pdb" that was placed in the examples directory of this module, do something like

std::ifstream in(IMP::pmi::get_example_path("example_protein.pdb"));

This will ensure that the code works both when IMP is installed or if used via the setup_environment.sh script.

Note
Each module has its own example directory, so be sure to use this function from the correct module.
bool IMP::pmi::get_is_canonical ( atom::Hierarchy  h)

Walk up a PMI2 hierarchy/representations and check if the root is named System.

Definition at line 98 of file utilities.h.

+ Here is the call graph for this function:

std::string IMP::pmi::get_molecule_name_and_copy ( atom::Hierarchy  h)

Walk up a PMI2 hierarchy/representations and get the "molname.copynum".

Definition at line 87 of file utilities.h.

+ Here is the call graph for this function:

atom::Hierarchy IMP::pmi::get_parent_representation ( atom::Hierarchy  h)

Get the parent, or if non-tree Representation get the fake parent.

Definition at line 75 of file utilities.h.

+ Here is the call graph for this function: