The reason is that the displacement fields require a lot of memory/HD space. At the beginning I was using double precision floating point variables to store them (I think this is the right thing to do) but the SyN algorithm required almost 4 GB of RAM. Then I switched to single precision (this is what ANTS does) but I wanted to keep the possibility to easily switched to 64 bit floats in the future by just defining floating as np.float64 (and changing fused_types.pxd accordingly).