Yang,
Is it the SVD decomposition where you're running into the out-of-memory error? If so, then reducing the number of components is a good idea. From the tests I've done, 128 components is usually plenty. You can always try more or less as needed. Because of the way that code works, it has to load the entire dataset into memory at once rather than dividing it into chunks that fit easily in memory as we do in many of our other tools. Unfortunately we don't have a check to see if you have enough memory to do the SVD at the moment. It's something that we will be adding though.
The positions of the centroids are relative to the double-cropped image. I don't know of anyone who has tried to translate them back to the raw image, but I will look into it. The shift that you're performing should be the correct method.
For the plots, the matplotlib plotting tools mostly work, but the save figure is one that we've had many problems with. In out pyUSID package, we have a widget function that will allow you to save any figure. Simply import pyUSID and call pyUSID.viz.jupyter_utils.save_fig_filebox_button(*figure object*, *filename to save as*). I'll be adding these to the notebook in the repository if you would prefer to wait.
Please let us know if you have any more questions, and thanks for using Pycroscopy.
Chris Smith