As I'd mentioned before, I've been very happy with the I/O support provided in the IMP.hdf5 module and would like to simplify the various IMP I/O options around this. While I think the IMP.hdf5 support is generally better for almost every problem, the module does not provide direct one to one replacements for much of the existing functionality, so there may be usages which are more annoying with the new structure. So please try it out and provide feedback.
To simplify things, I would propose - deprecating and then removing the kernel binary I/O. This would remove IMP.read_particles_binary, IMP.write_particles_binary, WriteBinaryOptimizerState, IMP.write_configuration_set and IMP.read_configuration_set. This then removes the use of NetCDF, dropping the number of dependencies by one.
- deprecating and then removing the kernel text I/O. This would remove IMP.read_particles, IMP.write_particles.
Particular areas where IMP.hdf5 differs from what existed previously include - there is nothing quite so space efficient as IMP.write_particles_binary. I haven't directly compared the two, but the hdf5 files are not too bad in terms of size - in contrast to IMP.write_particles_binary, you can't/don't have to specify which attributes are written, with IMP.hdf5 all are written.
For now, please be careful about using the hdf5 files as an archive format for long term storage.