Hi,
I think we should implement the Python prototype design pattern (http://en.wikipedia.org/wiki/Prototype_pattern) for the pipe.copy(), molecule.copy(), residue.copy(), spin.copy(), diffusion_tensor.copy(), etc. user functions. This will be a tough one to implement - a single call to the deepcopy() function from the Python copy module :)
Cheers,
Edward