Modified MSMLib.invert_assignments to ignore -1's in assignments (#140). Began with Project.get_random_confs_from_states to replace the old GetRandomConfsFromState (#139). Also added fix to reconcile Project.empty_traj and Trajectory.__[i]add__ (#141).
Project.get_random_confs_from_states fixes. It now does load a trajectory correctly. I still need to come up with a test to be sure that it is loading up the right conformations...
added project.get_random_confs_from_states.randomize, which will either use np.random.randint or np.random.permutation based on the kwarg replacement to generate a random sample from a particular state.
Adjusted the docstringin Project.get_random...confs as well as fixed an issue with mapping the number of conformations to find to the states list.
Modified SaveStructures.py to use the new project method to grab random structures. Also updated the SaveStructures test in test_wrappers to use the new functionality. This is a little different because the SaveStructures.run function is gone, and SaveStructures.main simply calls the project.get_random_confs_from_states and then SaveStructures.save. I do not know if this is the best way to do it.
Added ValueError when replacement=False and the state has too few conformations to sample.
Added to MSMLib.invert_assignments to notify the user that the inverse assignments will not include any -1's used to pad the trimmed states or shorter trajactories. Also added a docstring for project.get_random_confs_from_states.randomize, which is a helper function for using np.random.randint or np.random.permutation when sampling conformations
Docstring modifications in project.py
Merge pull request #146 from schwancr/random_confs

project.get_random_confs_from_states reincarnates an old project method that will randomly sample conformations from your MSM. Additionally, the SaveStructures.py script now uses this method.