Set of python classes to create a multi-state, multi-resolution IMP hierarchy.
- Start by creating a System with
model = IMP.Model(); s = IMP.pmi1.topology.System(model)
. The System will store all the states.
- Then call System.create_state(). You can easily create a multistate system by calling this function multiples times.
- For each State, call State.create_molecule() to add a Molecule (a uniquely named polymer). This function returns the Molecule object which can be passed to various PMI functions.
- Some useful functions to help you set up your Molecules:
- Access the sequence residues with slicing (Molecule[a:b]) or functions like Molecule.get_atomic_residues() and Molecule.get_non_atomic_residues(). These functions all return python sets for easy set arithmetic using & (and), | (or), - (difference)
- Molecule.add_structure() to add structural information from a PDB file.
- Molecule.add_representation() to create a representation unit - here you can choose bead resolutions as well as alternate representations like densities or ideal helices.
- Molecule.create_clone() lets you set up a molecule with identical representations, just a different chain ID. Use Molecule.create_copy() if you want a molecule with the same sequence but that allows custom representations.
- Once data has been added and representations chosen, call System.build() to create a canonical IMP hierarchy.
- Following hierarchy construction, setup rigid bodies, flexible beads, etc in IMP::pmi1::dof.
- Check your representation with a nice printout: IMP::atom::show_with_representation() See a comprehensive example for using these classes.
Alternatively one can construct the entire topology and degrees of freedom via formatted text file with TopologyReader and IMP::pmi1::macros::BuildSystem(). This is used in the PMI tutorial. Note that this only allows a limited set of the full options available to PMI users (rigid bodies only, fixed resolutions).