IMP logo
IMP Reference Guide  2.17.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.

Build Status codecov

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

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

 alphabets
 Mapping between FASTA one-letter codes and residue types.
 
 analysis
 Tools for clustering and cluster analysis.
 
 dof
 Create movers and set up constraints for PMI objects.
 
 io
 Utility classes and functions for reading and storing PMI files.
 
 macros
 Protocols for sampling structures and analyzing them.
 
 mmcif
 Support for the mmCIF file format.
 
 output
 Classes for writing output files and processing them.
 
 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  MissingFileWarning
 Warning for an expected, but missing, file. More...
 
class  ParameterWarning
 Warning for probably incorrect input parameters. More...
 
class  Resolution
 Add resolution to a particle. More...
 
class  StructureWarning
 Warning related to handling of structures. 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)
 
Float get_dihedral_angle (const atom::Atom &p1, const atom::Atom &p2, const atom::Atom &p3, const atom::Atom &p4)
 
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...
 

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 ()
 Return the version of this module, as a string. More...
 
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 26 of file pmi/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 91 of file pmi/utilities.h.

std::string IMP::pmi::get_module_version ( )

Return the version of this module, as a string.

Note
This function is only available in Python.

Definition at line 5 of file EMageFit/__init__.py.

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 85 of file pmi/utilities.h.

+ Here is the call graph for this function: