1 PMI changelog {#pmi_changelog}
4 *News May 7 2016 - update 2*
6 Here is a list of recent feature additions and bug fixes in PMI2:
7 * Add colors with Molecule.add_representation(color=XXX). You can pass an (R,G,B) tuple or a named [color from chimera](https:
8 * Build order has been fixed so now fragments should be sorted by residue index in RMF files.
9 * Clustering will detect ambiguity and find the lowest distance of all permutations of molecule copies.
10 * Added HelixRestraint for maintaining secondary structure when doing MD
11 * Ideal helices now work with Molecule.add_representation(ideal_helix=True). Can grab a list of them with Molecule.get_ideal_helices().
12 * New utility functions: IMP.pmi.tools.shuffle_configuration(), DegreesOfFreedom.optimize_flexible_beads()
13 * The BuildSystem macro now supports copies (and colors). See the "automatic.py" example.
14 * Removed dependency on BioPython
20 We have updated PMI significantly, completely rewriting the topology building tools (you may see the new code referred to as "PMI2". Instead of using the monolithic "representation" class (in representation.py) we are now using a set of modular classes with a bit more flexibility:
21 * Setup is now done with hierarchical classes in the Topology module: System, State, Molecule. A key improvement is that hierarchy construction (including building representations) is only done at the end, which means much faster setup time. Molecule.add_structure() lets you add PDB files and Molecule.add_representation() lets you choose from various representations including beads, densities (gaussians), and ideal helices. For selecting things to pass to these functions, you can get "TempResidues" by slicing Molecule: mol[a:b], mol.residue_range('a','b') where quotes indicate PDB-style indexing. These slices produce sets so they can be combined etc with set operations.
22 * Naming is different in PMI2. Before, different segments and copies of molecules had different names. Now we require that the Molecule name be the same for all domains and all copies - the name really should be the name of the sequence. To handle ambiguity, we use the Copy decorator. In PMI2, set up copies with molecule.create_copy() or molecule.
create_clone() (copies can have different representation topologies, clones must be identical). You can pass copy_index to IMP.atom.Selection to get the ones you want.
23 * We now use the IMP.atom.Representation decorator to organize resolutions. This is an improvement over the old code because it allows fast searching of resolutions using IMP.atom.Selection (pass representation_type=IMP.atom.BALLS or IMP.atom.DENSITIES along with resolution=X).
24 * Movers are now handled separately in the DegreesOfFreedom class, with functions like
create_rigid_body(), create_super_rigid_body(), create_flexible_beads(), setup_md(), and constraints like constrain_symmetry()
25 * The previous "table" format for automatic construction has been revamped. Now we use the TopologyReader to read in a text file (with format checking) and the BuildSystem macro to construct the hierarchy and degrees of freedom.
26 * Most restraints support the new interface, usually you'll pass the built System hierarchy instead of the old representation
object.
27 * The ReplicaExchange0 macro works the same as before, just pass your System hierarchy, again instaed of the old representation
object.
28 * Most analysis tools are now compatible with PMI2.
29 * Lots of examples have been added, see the full list [here](https:
31 Changes in IMP that are helpful in PMI:
34 * RMF supports the new PMI hierarchies
42 PMI was added as an IMP submodule. But what might not be obvious is that a submodule is tied to a specific revision (or git hash) so doesn't automatically update whenever PMI is updated. So far I've been updating PMI in IMP on a rather ad hoc basis (essentially whenever I make changes to PMI itself), but you might want to do this too when you add new features.
44 It's pretty easy: if you maintain PMI outside of IMP somewhere, just go into your IMP checkout, cd modules/pmi, then `git checkout <githash>` where <githash> is the version of PMI you want to live in IMP. Then you can go back up into IMP proper and git commit/git push that change. Or you can do what I do and work on the copy of PMI that's in IMP directly rather than checking it out separately. To do that, go into modules/pmi in your IMP checkout and run `git checkout develop` to get on the PMI develop branch. Then you can run all the normal git commands (e.g. git pull) in there. (Although note that you can't push by default; that's easy to fix though by running `git remote set-url --push origin git@github.com:salilab/pmi.git`.) When you're done with your git push, you can cd up into IMP proper and commit the change in PMI githash there (without having to remember what it is).
48 The main branch is now `develop` (not `master`) and the module is included
51 *News February 28 2014*
53 The [clustering analysis](http:
55 *News February 25 2014*
57 First working version of the [clustering analysis](http:
58 of the structures, but soon I'll add statistics, features and localization densities.
60 To have full speed install the mpi4py python library
63 *News February 10 2014*
65 Checkout the macros in macros.py
67 *News February 6 2014*
69 Added a FAQ section in the wiki. There will be ipython notebook tutorials soon.
70 Best IMP version so far: `ee1763c6859a29ab37415c8454d16549268d9668`
71 Previous versions had a bug in the RigidClosePairsFinder [bug](https:
74 *News February 4 2014:*
76 Best IMP version so far: `b700fff93ca45ba1551c8aa9d697c805fcb126dc`
77 Previous versions might be considerably slow due to a [bug](https:
79 *News January 30 2014:*
81 Now the developed git branch is master and not resolution-zero.
83 If you want to use pmi, after you've freshly cloned it,
84 you don't have to checkout resolution-zero anymore:
85 it is the default branch that you get when you clone it.
87 The resolution-zero branch does not exist anymore,
88 it was copied into resolution-zero-old.
90 To see what branch you're in, run (into the pmi source code directory):
94 If you want to update the code and you still are in resolution-zero branch,
100 Note that the interface is also changing,
101 so you'll probably get deprecated warnings in your standard output more and more.
102 `grep deprecated` to get the deprecation warnings, which might be lost in the middle of many other messages. Change your python script according to what the warnings say.
103 The old version of pmi (mainly used by Peter and SJ) is
104 still available under the tag "v0.1". To get it:
106 `git checkout tags/v0.1`
Hierarchy create_clone(Hierarchy d)
Clone the Hierarchy.
void show_with_representations(Hierarchy h, std::ostream &out=std::cout)
Traverse through the tree and show atom info, including representations.
int get_state_index(Hierarchy h)
Walk up the hierarchy to find the current state.
std::string get_molecule_name(Hierarchy h)
int get_copy_index(Hierarchy h)
Walk up the hierarchy to find the current copy index.
IMP::core::RigidBody create_rigid_body(const Hierarchies &h, std::string name=std::string("created rigid body"))
Rigidify a molecule or collection of molecules.