Now that there is the the hdf5 based I/O support in IMP, I would propose moving towards getting rid of the old I/O functions IMP::read_particles IMP::write_particles, IMP::read_particles_binary, IMP::write_particles_binary as I think they are little used, complicated and the last two require NetCDF to work.
The new format is a very different IO model than the kernel function in that it creates new particles upon read rather than loading the data into an ordered list of existing particles. I think this makes for more resilient code as adding a new particle doesn't make you unable to load your old data.
The advantages of the new format include:
- the ability to create molecular hierarchies and particles upon reading (similar to what happens with read_pdb)
- better control for loading and saving multiple conformations of the same set of particles
- the ability to write and read display::Geometry objects
- the ability to go directly from atom::Hierarchies in a file to things that can be displayed in Chimera/Pymol via the command line
- the ability to print out molecular hierarchies in the file directly from the command line
In doing this, one would, at least for the moment, loose the ability to read and write ConfigurationSets in one go, but that could be easily added if desired. However, I'm not sure that writing things in such a raw way is really that desirable.
Thoughts?
Anyway, I encourage people to try out the module.