IMP Reference Guide  develop.1dcc071,2019/02/15 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.

## 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

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.

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  InternalCoordinatesConstraint
An example singleton modifier. 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...

def deprecated_pmi1_object
Mark a PMI1 class as deprecated. 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 ()

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 utilities.h.

Here is the call graph for this function:

 def IMP.pmi.deprecated_pmi1_object ( version, help_message )

Mark a PMI1 class as deprecated.

Point to its replacement or IMP.pmi1

Note
This function is only available in Python.

Definition at line 498 of file pmi/__init__.py.

 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 utilities.h.

 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 utilities.h.

Here is the call graph for this function: